@feiyangyang
2022-06-06T06:26:26.000000Z
字数 1592
阅读 320
题目点我
题解
难度: 普及-
来源: 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为奇数。