前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【小码匠自习室】 [NOI Online 2022 入门组] 王国比赛

【小码匠自习室】 [NOI Online 2022 入门组] 王国比赛

作者头像
小码匠
发布2022-08-08 13:20:37
4420
发布2022-08-08 13:20:37
举报
文章被收录于专栏:小码匠和老码农

碎碎念

  • 这道题是3月份参赛时做出来的唯一一道题,相对简单。 其实第二道题:数学游戏也是有机会做出来,大意失荆州,当时仔细点,也说不定就AC2道题,伤心的往事...

题目地址

  • [NOI Online 2022 入门组] 王国比赛
    • https://www.luogu.com.cn/problem/P8254

题目描述

智慧之王 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

代码语言:javascript
复制
3 3
1 0 1
0 1 1
0 1 0
1 1 1

输出 #1

代码语言:javascript
复制
2

输入 #2

代码语言:javascript
复制
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

代码语言:javascript
复制
4

输入 #3

代码语言:javascript
复制
见附件中的 kingdom3.in

输出 #3

代码语言:javascript
复制
见附件中的 kingdom3.out

说明/提示

【样例 1 解释】

  • 第一题 x=1,y=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 为奇数。

题解

小码匠题解一

  • 一次AC
代码语言:javascript
复制
#include <iostream>
#include <cstdio>

using namespace std;

#define endl '\n';

int main() {

    // 提升cin、cout效率
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int n, m;
    cin >> n >> m;
    int true_false[m + 1][n];
    for (int i = 0; i <= m; i++) {
        for (int j = 0; j < n; j++) {
            cin >> true_false[i][j];
        }
    }
    int true_num = 0;
    int false_num = 0;
    int count = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (true_false[j][i] == 0) {
                false_num++;
            } else if (true_false[j][i] == 1) {
                true_num++;
            }
        }
        if (false_num > true_num && true_false[m][i] == 0) {
            count++;
        } else if (false_num < true_num && true_false[m][i] == 1) {
            count++;
        }
        true_num = 0;
        false_num = 0;
    }
    cout << count;
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小码匠和老码农 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目地址
  • 题目描述
  • 输入格式
  • 输出格式
  • 输入输出样例
  • 说明/提示
    • 小码匠题解一
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档