CF求调
  • 板块学术版
  • 楼主hahaxiang
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/7/30 09:39
  • 上次更新2023/11/3 06:57:58
查看原帖
CF求调
713562
hahaxiang楼主2023/7/30 09:39

https://codeforces.com/gym/104493/problem/J 题意: 加入一个最小的X,使得均值和平均数相等 思路: 考虑a[n/2],a[n/2+1],x作为平均数的情况 waon17

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+100;
int t,n,a[N];
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0); 
	cin>>t;
	while(t--)
	{
		int sum=0;
		cin>>n;
		for(int i=1;i<=n;i++)
		{
			cin>>a[i];
			sum+=a[i];
		}
		sort(a+1,a+1+n);
		int wan,ans=LLONG_MAX;
		wan=a[n/2]*(n+1);
		if(wan-sum<=a[n/2])
		{
			ans=min(ans,wan-sum);
		}
		wan=a[n/2+1]*(n+1);
		if(wan-sum>=a[n/2+1])
		{
			ans=min(ans,wan-sum);
		}
		if(sum%n==0)
		{
			wan=sum/n;
			if(wan>=a[n/2]&&wan<=a[n/2+1])
			{
				ans=min(ans,wan);
			}
		}
		cout<<ans<<endl;
		//x*n+1=sum+x
		//x*n=sum
	}
	return 0;
}
2023/7/30 09:39
加载中...