题意
感染者评分为x,感染者不参与竞赛
感染方式:
评分为x的竞赛者会被感染
评分为x的竞赛者在比赛中可以感染别人
一场竞赛,任何人的分数都可以改变,但要保证n个人总评分不变
n个人进行竞赛,求将n个人都感染,且不改变所有人的评分总和,需要的最少比赛次数
思路
1> n个人每个人评级都是x ,0次就可以感染
2> n个人评分平均为x,1场比赛可以把所有人评分变成x
3> n个人评分有人是x,1场比赛…
4> n个人评分不满足以上情况,进行一次比赛变成 3> , 再进行一次即可,所以需要两次
代码
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define N 1010
int a[N];
int main()
{
int t,n,k;
scanf("%d",&t);
while(t--){
int f1=0,f2=0,sum=0;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
if(a[i]==k) f1=1; //存在等于k
else f2=1; //存在等于k的值
sum+=a[i];
}
if(!f2) printf("0\n"); //全都等于k
else if(n*k==sum||f1) //平均分为k或 有 评分等于k的人
printf("1\n");
else printf("2\n"); //不满足
}
return 0;
}