本文主要是介绍CodeForces 1419 - Codeforces Round(思维题),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意
感染者评分为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; //存在等于kelse f2=1; //存在等于k的值sum+=a[i];}if(!f2) printf("0\n"); //全都等于kelse if(n*k==sum||f1) //平均分为k或 有 评分等于k的人printf("1\n");else printf("2\n"); //不满足}return 0;
}
这篇关于CodeForces 1419 - Codeforces Round(思维题)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!