1 条题解

  • 0
    @ 2026-7-20 15:56:19
    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    const int N=1e6+10;
    int a[10010][110],b[N],len;
    struct BIT{
    	int c[N],n;
    	void add(int x,int k){for(;x<=n;x+=x&-x)c[x]+=k;}
    	int get(int x){int ans=0;for(;x;x-=x&-x)ans+=c[x];return ans;}
    }tr;
    signed main()
    {
    	int n,m;cin>>n>>m;tr.n=n*m;
    	for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>a[i][j],b[++len]=a[i][j];
    	sort(b+1,b+len+1);
    	for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)
    		a[i][j]=lower_bound(b+1,b+len+1,a[i][j])-b;
    	int ans=0;
    	for(int i=n;i>=1;i--)
    	{
    		for(int j=1;j<=m;j++)
    			ans+=tr.get(a[i][j]-1)+j*(n-i);
    		for(int j=1;j<=m;j++)tr.add(a[i][j],1);
    	}
    	cout<<ans;
    	return 0;
    }
    • 1

    信息

    ID
    9125
    时间
    4000ms
    内存
    1024MiB
    难度
    10
    标签
    递交数
    4
    已通过
    2
    上传者