[关闭]
@feiyangyang 2022-06-06T06:26:26.000000Z 字数 1592 阅读 319

王国比赛题解

题目点我
题解
难度: 普及-
来源: 2022年CCF Online1入门组

大意:给你m个人的n个问题的答案,0或1,让你预估答案

预估方法:把m个人的所有第i题的答案拿出来看,
如果写1的人大于写0的人,那么预估答案为1;反之,预估答案为0

然后给你一行正确答案,问有多少个预估答案是对的

思路:
这道题其实很简单
首先你把它全部输入到一个二维数组里

  1. cin>>m>>n;//m个人,n个问题
  2. for(int i=1;i<=n;i++)
  3. {
  4. forint j=1;j<=m;j++)
  5. {
  6. cin>>a[i][j];
  7. }
  8. }
  9. for(int i=1;i<=m;i++)
  10. {
  11. scanf("%d",&check[i]);
  12. }

然后检验

  1. for(int i=1;i<=m;i++) //循环题目
  2. {
  3. for(int j=1;j<=n;j++) //循环答题人
  4. {
  5. if(a[j][i]==1) //j个人的第i个问题如果为一就累加
  6. {
  7. one++;
  8. }
  9. else //反之就减
  10. {
  11. one--;
  12. }
  13. }
  14. if(one>0) //循环完答案后开始预估
  15. {
  16. if(check[i]==1) //看预估的与答案是否相等
  17. {
  18. k++;//是记得累加
  19. }
  20. }
  21. else//反之 (以下与上文相同)
  22. {
  23. if(b[i]==0)
  24. {
  25. k++;
  26. }
  27. }
  28. one=0 //清零
  29. }

真是一道容易的题呢~

合起来

  1. #include<stdio.h>
  2. using namespace std;
  3. int n,m,c,d,poi=0,noi=0,b[1001],a[1001][1001],k=0;
  4. int main()
  5. {
  6. freopen("kingdom.in","r",stdin);
  7. freopen("kingdom.out","w",stdout);
  8. scanf("%d%d",&m,&n);
  9. for(int i=1;i<=n;i++)
  10. {
  11. for(int j=1;j<=m;j++)
  12. {
  13. scanf("%d",&a[i][j]);
  14. }
  15. }
  16. for(int i=1;i<=m;i++)
  17. {
  18. scanf("%d",&b[i]);
  19. }
  20. for(int i=1;i<=m;i++)
  21. {
  22. for(int j=1;j<=n;j++)
  23. {
  24. if(a[j][i]==1)
  25. {
  26. poi++;
  27. }
  28. else
  29. {
  30. noi++;
  31. }
  32. }
  33. if(poi>noi)
  34. {
  35. if(b[i]==1)
  36. {
  37. k++;
  38. }
  39. }
  40. else
  41. {
  42. if(b[i]==0)
  43. {
  44. k++;
  45. }
  46. }
  47. poi=0;
  48. noi=0;
  49. }
  50. printf("%d",k);
  51. return 0;
  52. }

友情提供题目:
1529. 【2022年CCF Online入门组】王国比赛
input:kingdom.in output:kingdom.out
时间限制: 1000 ms 空间限制: 262144 KB

题目描述
智慧之王 Kri 统治着一座王国。这天 Kri 决定举行一场比赛,来检验自己大臣的智慧。比赛由n道判断题组成,有m位大臣参加。现在你已经知道了所有大臣的答题情况,但尚未拿到答案,于是你决定先行预测。具体来说,对于第i道题,有x个大臣选对,y个大臣选错(显然有x+y=m),如果x>y,那么你预测这题答案为对,否则为错。为了方便,我们保证m是奇数。在统计完成后,你拿到了答案,你想知道通过你的预测方式你最后有几道题预测正确。

输入
第一行两个正整数n,m,保证m是奇数。
接下来m行,每行n个整数,第i行第j个整数aij代表第i位大臣对第j道题的答案,1表示他选对,0表示他选错。
接下来1行n个整数,表示比赛答案, 第i个数bi若为1表示第i道题答案是对,若为0表示答案是错。

输出
输出一个整数,表示你最后有几题预测正确。

样例输入
输入样例1
3 3
1 0 1
0 1 1
0 1 0
1 1 1
输入样例2
6 5
1 0 1 1 1 0
0 1 0 1 1 1
0 0 1 0 1 0
1 0 1 0 1 0
0 1 0 1 0 0
1 0 1 0 1 0

样例输出
输出样例1
2
输出样例2
4

数据范围限制
对于20%的数据,n<=5,m=1;
对于50%的数据,n<=10,m<=10;
对于100%的数据,n<=1000,m<=1000,m为奇数。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注