社区讨论

WA

P1908逆序对参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mhizf1gq
此快照首次捕获于
2025/11/03 18:13
4 个月前
此快照最后确认于
2025/11/03 18:13
4 个月前
查看原帖
归并求逆序对,没通过
CPP
#include<bits/stdc++.h>
using namespace std;
int n,a[100005],sum,r[100005];
void gb(int s,int t)
{
	if(s==t)
		return;
	int mid=(s+t)/2;
	gb(s,mid);
	gb(mid+1,t);
	int i=s,j=mid+1,k=s;
	while(i<=mid&&j<=t)
	{
		if(a[i]<=a[j])
		{
			r[k]=a[i];
			i++;
			k++;
		}
		else{
			r[k]=a[j];
			j++;
			k++;
			sum+=mid-i+1;
		}
	}
	while(i<=mid)
	{
		r[k]=a[i];
		i++;k++;
	}
	while(j<=t)
	{
		r[k]=a[j];
		j++;k++;
	}
	for(int i=s;i<=t;i++)
	{
		a[i]=r[i];
	}
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	gb(1,n);
	printf("%d",sum);
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...