【题解】王国比赛
【题目描述】
智慧之王 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
【样例输出1】
2
【样例1解释】
第一题 你预测答案为错(即0),实际答案为1,预测错误。
第二题 你预测答案为对(即1),实际答案为1,预测正确。
第三题 你预测答案为对(即1),实际答案为1,预测正确。 所以预测正确的题数为2。
【样例2输入】
5 6 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
【样例2输出】
4
【数据范围】
对于20%的数据,n<=5,m=1 。
对于50%的数据,n<=10,m<=10 。
对于100%的数据, n<=1000 , m<=1000,m为奇数 。
【题目分析】
整体比较简单,是一个简单的二维数组的题目
【参考代码】
#include<bits/stdc++.h> using namespace std; int m,n; //行和列 int a[1005][1005]; //存储预测的数组 int ans[1005]; //存储正确答案的数组 int sum; //最终预测正确的数量 int main(){ freopen("kingdom3.in","r",stdin); freopen("kingdom3.out","w",stdout); cin>>n>>m; for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ cin>>a[i][j]; //读入预测数组 } } for(int i=1;i<=n;i++){ cin>>ans[i]; //读入结果数组 } //下面开始遍历二维数组的列,并统计预测结果 for(int i=1;i<=n;i++){ //行和列互换 int rightNum=0; //每道题对的数量 int errorNum=0; //每道题错的数量 for(int j=1;j<=m;j++){ if(a[j][i]==1){ rightNum++; }else{ errorNum++; } } //统计完毕后,统计预测的结果 int result=0; //每轮的预测结果 if(rightNum>errorNum){ result=1; } if(result==ans[i]){ sum++; } } cout<<sum; return 0; }
扫描二维码推送至手机访问。
版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。