【BZOJ1106】【POI2007】立方体大作战tet(树状数组+贪心)

it2022-05-05  96

贪心策略:每加入一个数,如果之前已经存在它了,就直接交换

因此我们需要维护距离 就用树状数组好了

注意是2n

#include<bits/stdc++.h> #define N 100005 using namespace std; int n,tree[N],pre[N],ans; inline int lowbit(int x) { return x&(-x); } inline void update(int x,int del) { for(int i=x;i<=2*n;i+=lowbit(i)) tree[i]+=del; } inline int query(int x) { int ans=0; for(int i=x;i;i-=lowbit(i)) ans+=tree[i]; return ans; } int main() { scanf("%d",&n); for(int i=1,x;i<=2*n;i++) { scanf("%d",&x); if(!pre[x]) { pre[x]=i; update(i,1); } else { ans+=query(i)-query(pre[x]); update(pre[x],-1); } } cout<<ans; return 0; }

转载于:https://www.cnblogs.com/Patrickpwq/articles/9853312.html

相关资源:各显卡算力对照表!

最新回复(0)