[NOI online2022普及A] 王国比赛
题目描述
智慧之王 Kri 统治着一座王国。
这天 Kri 决定举行一场比赛,来检验自己大臣的智慧。
比赛由 \(n\) 道判断题组成,有 \(m\) 位大臣参加。现在你已经知道了所有大臣的答题情况,但尚未拿到答案,于是你决定先行预测。
具体来说,对于第 \(i\) 道题,有 \(x\) 个大臣选对,\(y\) 个大臣选错(显然有 \(x+y=m\)),如果 \(x>y\),那么你预测这题答案为对,否则为错。为了方便,我们保证 \(m\) 是奇数。
在统计完成后,你拿到了答案,你想知道通过你的预测方式你最后有几道题预测正确。
输入格式
第一行两个正整数 \(n,m\),保证 \(m\) 是奇数。
接下来 \(m\) 行,每行 \(n\) 个整数,第 \(i\) 行第 \(j\) 个整数代表第 \(i\) 位大臣对第 \(j\) 道题的答案,\(1\) 表示他选对,\(0\) 表示他选错。
接下来 \(1\) 行 \(n\) 个整数, 表示比赛答案,第 \(i\) 个数 \(b_i\). 若为 \(1\) 表示第 \(i\) 道题答案是对,若为 \(0\) 表示答案是错。
输出格式
输出一个整数,表示你最后有几题预测正确。
输入输出样例
输入 #1
3 3
1 0 1
0 1 1
0 1 0
1 1 1
输出 #1
2
输入 #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
输出 #2复制
4
【样例 1 解释】
第一题 \(x=1,y=2\) 你预测答案为错(即 \(0\)),实际答案为\(1\),预测错误。
第二题 \(x=2,y=1\) 你预测答案为对(即 \(1\)),实际答案为\(1\),预测正确。
第三题 \(x=2,y=1\) 你预测答案为对(即 \(1\)),实际答案为\(1\),预测正确。
所以预测正确的题数为 \(2\)。
【数据范围】
对于 \(20\%\) 的数据,\(n\le 5\),\(m=1\)。
对于 \(50\%\) 的数据,\(n\le 10\),\(m\le 10\)。
对于 \(100\%\) 的数据,\(1 \le n\le 1000\),\(1 \le m\le 1000\),\(m\) 为奇数。
这是一道模拟题。
首先,对于每个\(i\),判断出每个大臣选择那个。然后再看一下更标准答案是否一样,统计一下即可。
#include<cstdio>
const int N=1005;
int n,m,a[N][N],x,t,ans;
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
scanf("%d",a[i]+j);
for(int i=1;i<=n;i++)
{
scanf("%d",&x),t=0;
for(int j=1;j<=m;j++)
t+=a[j][i];
if(t>m-t)
ans+=x;
else
ans+=!x;
}
printf("%d",ans);
return 0;
}