专栏文章

题解:CF2014C Robin Hood in Town

CF2014C题解参与者 1已保存评论 0

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@minw9oak
此快照首次捕获于
2025/12/02 09:23
3 个月前
此快照最后确认于
2025/12/02 09:23
3 个月前
查看原文

解题思路

  1. n=1n = 1 或者 n=2n = 2 时根据题目条件一定无解。
  2. 将求出 aa 数组的和,aa 是输入数组并且将其求和记作 cntcnt
  3. 因为对 aa 从小到大排序所以数组的第 n2+1\frac{n}{2}+1 的位置就是中间值。
  4. 用平均值计算出有超过一半的人口感到不幸福时钱有多少最后减去总和也就是 cntcnt 即可。

给出代码

CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+5;
int n;
int a[N];
int cnt;
int mid,s,t;
signed main (){
	scanf("%d",&t);
	while(t--){
		scanf("%d",&n);
		cnt=0;//有多组数据初始化
		for(int i=1; i<=n; i++){
			scanf("%d",&a[i]);
			cnt+=a[i];//求和
		}
		if(n==1||n==2){//判断无解情况
			printf("-1\n");
			continue;
		}
		sort(a+1,a+n+1);//排序
		mid=a[(n/2)+1];
		mid=mid*2*n+1;
		printf("%d\n",max(0LL,mid-cnt));
	}
	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...