@feiyangyang
2022-06-06T06:26:26.000000Z
字数 1592
阅读 439
题目点我
题解
难度: 普及-
来源: 2022年CCF Online1入门组
大意:给你m个人的n个问题的答案,0或1,让你预估答案
预估方法:把m个人的所有第i题的答案拿出来看,
如果写1的人大于写0的人,那么预估答案为1;反之,预估答案为0
然后给你一行正确答案,问有多少个预估答案是对的
思路:
这道题其实很简单
首先你把它全部输入到一个二维数组里
cin>>m>>n;//m个人,n个问题for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];}}for(int i=1;i<=m;i++){scanf("%d",&check[i]);}
然后检验
for(int i=1;i<=m;i++) //循环题目{for(int j=1;j<=n;j++) //循环答题人{if(a[j][i]==1) //j个人的第i个问题如果为一就累加{one++;}else //反之就减{one--;}}if(one>0) //循环完答案后开始预估{if(check[i]==1) //看预估的与答案是否相等{k++;//是记得累加}}else//反之 (以下与上文相同){if(b[i]==0){k++;}}one=0; //清零}
真是一道容易的题呢~
合起来
#include<stdio.h>using namespace std;int n,m,c,d,poi=0,noi=0,b[1001],a[1001][1001],k=0;int main(){freopen("kingdom.in","r",stdin);freopen("kingdom.out","w",stdout);scanf("%d%d",&m,&n);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){scanf("%d",&a[i][j]);}}for(int i=1;i<=m;i++){scanf("%d",&b[i]);}for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){if(a[j][i]==1){poi++;}else{noi++;}}if(poi>noi){if(b[i]==1){k++;}}else{if(b[i]==0){k++;}}poi=0;noi=0;}printf("%d",k);return 0;}
友情提供题目:
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为奇数。