[刚刚结束]ABC 268 E代码求调
  • 板块学术版
  • 楼主王君诺弈!悟!
  • 当前回复11
  • 已保存回复11
  • 发布时间2022/9/10 21:46
  • 上次更新2023/10/27 12:04:41
查看原帖
[刚刚结束]ABC 268 E代码求调
539529
王君诺弈!悟!楼主2022/9/10 21:46

题目

思路:统计把每个盘子转到对应的人需要的操作次数存在数组 t

答案即为i=0n1it[i]\sum_{i=0}^{n-1}|i-t[i] |

代码WA,求调

或者帮忙指出思路有问题

求求力。

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
long long n,w[N],t[N],ans,z,a[N];
int main(){
	cin>>n;
	for(int i=0;i<n;++i){
		cin>>w[i];
		a[w[i]]=i;
	}
	for(int i=0;i<n;++i){
		t[i]=(i-a[i]+n)%n;
		//cout<<t[i]<<endl;
	}
	sort(t,t+n);
	z=t[n/2-1];
	if(n%2==1) z=t[n/2];
	for(int i=0;i<n;++i){
		ans+=abs(z-t[i]);
	}
	cout<<ans;
	return 0;
}
2022/9/10 21:46
加载中...