求条!!!!!!
查看原帖
求条!!!!!!
1011568
CodingFrog1楼主2025/1/12 10:20

闰土

#include<bits/stdc++.h>
using namespace std;
int tree[5000005],p[5000005],a[5000005],b[5000005],n,m;
inline bool cmp(int x,int y)// 离散化快排 
{
	return a[x]<a[y];
}
inline void add(int x,int y)//快加,更新爸爸 
{
	for(int i=x;i<=n;i+=i&(-i))
	{
		tree[i]+=y;
	}
}
inline int sum(int x)//找鹅子统计和 
{
	int ans=0;
	for(int i=x;i>0;i-=i&(-i))
	{
		ans+=tree[i]; 
	}
	return ans;
}
map<int ,int> mp;//离散化map 
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		b[i]=a[i];
		p[i]=i;
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++)
	{
		mp[a[i]]=i;
	}//离散化 
	int ans=0;
	for(int i=n;i>=1;i--)
	{
		ans+=sum(mp[b[i]]-1);
		add(mp[b[i]],1);
	}//边压边统计 
	cout<<ans<<endl;//输出 
	return 0;
}
2025/1/12 10:20
加载中...