標籤:
Permutation GraphsTime Limit: 3000msMemory Limit: 131072KBThis problem will be judged on UVALive. Original ID: 6508
64-bit integer IO format: %lld Java class name: Main 解題:逆序數
1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long LL; 4 const int maxn = 100010; 5 int c[maxn],hhash[maxn],n; 6 void add(int i){ 7 while(i > 0){ 8 c[i] += 1; 9 i -= i&-i;10 }11 }12 int sum(int i,int ret = 0){13 while(i < maxn){14 ret += c[i];15 i += i&-i;16 }17 return ret;18 }19 int main(){20 int kase,tmp;21 scanf("%d",&kase);22 while(kase--){23 scanf("%d",&n);24 for(int i = 1; i <= n; ++i){25 scanf("%d",&tmp);26 hhash[tmp] = i;27 }28 memset(c,0,sizeof c);29 LL ret = 0;30 for(int i = 0; i < n; ++i){31 scanf("%d",&tmp);32 ret += sum(hhash[tmp] + 1);33 add(hhash[tmp]);34 }35 printf("%lld\n",ret);36 }37 return 0;38 }View Code
UVALive 6508 Permutation Graphs