[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;
}
posted @ 2022-04-14 12:19  灰鲭鲨  阅读(245)  评论(0编辑  收藏  举报