标签:字符串 注意 std freopen stdout desc bsp 一个 swap
1 #include<iostream> 2 #include<cstdio> 3 #include<string> 4 #include<algorithm> 5 using namespace std; 6 long long ans=0,a[2000005],n,c[1000005]; 7 long long max0; 8 long long lowbit(long long x){ 9 return x&(-x); 10 } 11 void add(long long x,long long v){ 12 while(x<=max0){ 13 c[x]+=v; 14 x+=lowbit(x); 15 } 16 } 17 long long query(long long x){ 18 long long ans=0; 19 while(x){ 20 ans+=c[x]; 21 x-=lowbit(x); 22 } 23 return ans; 24 } 25 int main(){ 26 // freopen("swapping.in","r",stdin); 27 // freopen("swapping.out","w",stdout); 28 string l; 29 cin>>l; 30 n=l.size(); 31 for(long long i=0;i<n;i++){ 32 a[i+1]=l[i]-‘A‘+1; 33 max0=max(max0,a[i+1]); 34 } 35 for(long long i=n;i>=1;i--){ 36 ans+=query(a[i]-1); 37 add(a[i],1); 38 } 39 cout<<ans; 40 return 0; 41 }
over
标签:字符串 注意 std freopen stdout desc bsp 一个 swap
原文地址:https://www.cnblogs.com/saionjisekai/p/9753823.html