0pts
查看原帖
0pts
1095806
love20110429楼主2025/1/19 20:35
#include <iostream>
#include <map>
using namespace std;
int n,sum=0;
int a[500001];
map <string,int>t;
int lowbit(int x){
    return x&(-x);
}
int f(int x){
    int s=t[to_string(x)];
    while (x>=1){
        x-=lowbit(x);
        s+=t[to_string(x)];
    }
    return s;
}
int main()
{
    cin>>n;
    for (int i=1;i<=n;i++){
        scanf("%d",&a[i]);
        t[to_string(a[i])]++;
        int j=a[i];
        while (j<=i){
            j+=lowbit(j);
            t[to_string(j)]++;
        }
        sum+=f(i)-f(t[to_string(a[i])]);
    }
    cout<<sum;
    return 0;
}
2025/1/19 20:35
加载中...