建议降绿(P7868)
查看原帖
建议降绿(P7868)
1190117
JZJR_A_0楼主2024/9/24 16:14

题目链接:

P7868 [COCI2015-2016#2] VUDU

偶然做到,发现题解区的一群dalao们利用树状数组来求顺序对,

但是,我们都学过归并排序,

他的时间复杂度是 O(nlogn)O(n\log{n}) 的;

可以用来求逆序对:

P1908 逆序对

但是我们以此类推一下,也可以写出顺序对的求法:

void mersort(int l,int r){
	if(l==r)return ;
	int mid=(l+r)/2;
	mersort(l,mid);
	mersort(mid+1,r);
	int i=l,j=mid+1,k=l;
	while(i<=mid&&j<=r){
		if(a[i]<=a[j]){c[k]=a[i];i++;k++;ans+=r-j+1;}
		else {c[k]=a[j];j++;k++;}
	}
	while(i<=mid){c[k]=a[i];i++;k++;}
	while(j<=r){c[k]=a[j];j++;k++;}
	for(i=l;i<=r;i++)a[i]=c[i];
}

那么这道题不就快速切了吗?

结合 黄题思维难度+黄题打代码难度=中上位绿,不至于蓝色;

AC记录

2024/9/24 16:14
加载中...