王国的比赛

题目描述

智慧之王 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 个数 bi 若为 1 表示第 i 道题答案是对,若为 0 表示答案是错。

输出格式

输出一个整数,表示你最后有几题预测正确。

样例 #1

样例输入 #1

3 3
1 0 1
0 1 1
0 1 0
1 1 1
样例输出 #1

2
样例 #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
样例 #3

样例输入 #3

见附件中的 kingdom3.in
样例输出 #3

见附件中的 kingdom3.out
提示

【样例 1 解释】

第一题 x = 1,x = 2 你预测答案为错(即 0),实际答案为1,预测错误。
第二题 x = 2,y = 1 你预测答案为对(即 1),实际答案为1,预测正确。
第三题 x = 2,y = 1 你预测答案为对(即 1),实际答案为1,预测正确。
所以预测正确的题数为 2。

【数据范围】

对于 20% 的数据,n <= 5,m = 1。

对于 50% 的数据,n <= 10,m <= 10。

对于 100% 的数据,1 <= n <= 1000,1 <= m <= 1000,m 为奇数。

上代码:

#include <bits/stdc++.h>
using namespace std;
int n, m, s, yu[1007], x, p, q, a[1007][1007];
int main(){
	//freopen ("kingdom.in", "r", stdin);
	//freopen ("kingdom.out", "w", stdout);
	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 j=1; j<=n; j++){
		p = q = 0;
		for (int i=1; i<=m; i++){
			if (a[i][j] == 0) p ++;
			if (a[i][j] == 1) q ++;
		}
		if (p > q) yu[j] = 0;
		else yu[j] = 1;
	}
	for (int i=1; i<=n; i++){
		scanf ("%d", &x);
		if (x == yu[i]) s ++;
	}
	printf ("%d\n", s);
	return 0;
}

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值