鏈接:click here
題意:
2 3 1 2 3 4 4 3 2 1樣例輸出
0 6思路:就是求一組數據的逆序數,樹狀數組求法,不解釋:
代碼:
#includeWhen you want to give up, think of why you persist until now!#include #include #include #include #include #include #include #include #include #include using namespace std; #define lowbit(a) a&-a #define Max(a,b) a>b?a:b #define Min(a,b) a>b?b:a #define mem(a,b) memset(a,b,sizeof(a)) int dir[4][2]= {{1,0},{-1,0},{0,1},{0,-1}}; const double eps = 1e-6; const double Pi = acos(-1.0); static const int inf= ~0U>>2; static const int maxn =110; int h[1000001],w[100],Map[200]; int m[10001], N; void Add(int i) { while(i<=1001) { m[i]++; i+=lowbit(i); } } int Sum(int i) { int res=0; while(i>0) { res+=m[i]; i-=lowbit(i); } return res; } int main() { int T,temp; scanf("%d",&T); while(T--) { scanf("%d",&N); memset(m,0,sizeof(m)); int ans=0; for(int i=1; i<=N; i++) { scanf("%d",&temp); Add(temp); ans+=(i-Sum(temp)); } printf("%d\n",ans); } return 0; }