BZOJ1106: [POI2007]立方体大作战tet
2017-09-25 16:14
423 查看
转化了个带颜色的括号序列模型….然后不会….
题解是贪心…emmmmmmmmmm
好有道理a(不想证了…很对就是了….
加入每个颜色时,如果它已经出现过,就让他和上次出现的合并
用树状数组维护距离
code:
题解是贪心…emmmmmmmmmm
好有道理a(不想证了…很对就是了….
加入每个颜色时,如果它已经出现过,就让他和上次出现的合并
用树状数组维护距离
code:
#include<set> #include<map> #include<deque> #include<queue> #include<stack> #include<cmath> #include<ctime> #include<bitset> #include<string> #include<vector> #include<cstdio> #include<cstdlib> #include<cstring> #include<climits> #include<complex> #include<iostream> #include<algorithm> #define ll long long #define inf 1e9 #define lowbit(x) x&(-x) using namespace std; const int maxn = 101000; int n,N; int a[maxn]; int s[maxn]; void add(int x,int c){for(;x<=n;x+=lowbit(x))s[x]+=c;} int query(int x){int re=0;for(;x;x-=lowbit(x))re+=s[x];return re;} int las[maxn]; int main() { scanf("%d",&N); n=N<<1; int re=0; for(int i=1;i<=n;i++) { int x; scanf("%d",&x); a[i]=x; if(!las[x]) las[x]=i; else { re+=i-las[x]+query(las[x])-1; add(1,-1); add(las[x],1); add(1,-1); add(i,1); } } printf("%d\n",re); return 0; }
相关文章推荐
- [bzoj1106] [POI2007]立方体大作战tet
- bzoj 1106: [POI2007]立方体大作战tet(贪心+树状数组)
- 【BZOJ】1106: [POI2007]立方体大作战tet
- bzoj1106: [POI2007]立方体大作战tet
- BZOJ1106 [POI2007]立方体大作战tet
- BZOJ1106: [POI2007]立方体大作战tet
- [BZOJ 1106] [POI2007] 立方体大作战tet 【树状数组】
- BZOJ 1106: [POI2007]立方体大作战tet
- bzoj1106 [POI2007]立方体大作战tet
- BZOJ1106 [POI2007]立方体大作战tet
- BZOJ 1106 [POI2007]立方体大作战tet(树状数组)
- [BZOJ]1106: [POI2007]立方体大作战tet
- [bzoj1106][POI2007]立方体大作战tet
- BZOJ 1106 POI2007 立方体大作战tet 模拟
- BZOJ 1106 POI2007 立方体大作战tet 模拟
- 【POI2007】【BZOJ1106】立方体大作战tet
- 【bzoj1106】 [POI2007]立方体大作战tet
- bzoj1106: [POI2007]立方体大作战tet
- 【BZOJ 1106】 [POI2007]立方体大作战tet
- [BZOJ1106] [POI2007]立方体大作战tet