CF688A Opponents
  VW0ZAOA6bLNz 2023年12月10日 22 0


Opponents

题面翻译

问题描述

小白有 n 个对手,他每天都要和这些对手PK。对于每一天,如果 n 个对手全部到齐,那么小白就输了一场,否则小白就赢了一场。特别的,如果某天一个对手都没有到,也算小白赢。现在已知对手 d 天的出场情况,请计算小白最多能连胜多少场。

输入输出格式

输入格式

第一行,两个整数 n , d ( 1 ≤ n,d ≤ 100 )。接下来 d 行,每行 n 个 0 或 1 的整数,依次表示这一天所有对手的到场情况, 1 表示到场, 0 表示缺席。

输出格式

一个整数,表示最多的连胜场次。

题目描述

Arya has $ n $ opponents in the school. Each day he will fight with all opponents who are present this day. His opponents have some fighting plan that guarantees they will win, but implementing this plan requires presence of them all. That means if one day at least one of Arya’s opponents is absent at the school, then Arya will beat all present opponents. Otherwise, if all opponents are present, then they will beat Arya.

For each opponent Arya knows his schedule — whether or not he is going to present on each particular day. Tell him the maximum number of consecutive days that he will beat all present opponents.

Note, that if some day there are no opponents present, Arya still considers he beats all the present opponents.

输入格式

The first line of the input contains two integers $ n $ and $ d $ ( $ 1<=n,d<=100 $ ) — the number of opponents and the number of days, respectively.

The $ i $ -th of the following $ d $ lines contains a string of length $ n $ consisting of characters ‘0’ and ‘1’. The $ j $ -th character of this string is ‘0’ if the $ j $ -th opponent is going to be absent on the $ i $ -th day.

输出格式

Print the only integer — the maximum number of consecutive days that Arya will beat all present opponents.

样例 #1

样例输入 #1

2 2
10
00

样例输出 #1

2

样例 #2

样例输入 #2

4 1
0100

样例输出 #2

1

样例 #3

样例输入 #3

4 5
1101
1111
0110
1011
1111

样例输出 #3

2

提示

In the first and the second samples, Arya will beat all present opponents each of the $ d $ days.

In the third sample, Arya will beat his opponents on days $ 1 $ , $ 3 $ and $ 4 $ and his opponents will beat him on days $ 2 $ and $ 5 $ . Thus, the maximum number of consecutive winning days is $ 2 $ , which happens on days $ 3 $ and $ 4 $ .

solution

采用贪心的思想,记录当前连胜数,并记录最大连胜数,当前连胜数大于最大连胜数时,令最大连胜数等于当前连胜数,当出现失败时,最大连胜数记为0,胜利则加1

//
// Created by Gowi on 2023/12/2.
//

#include <iostream>
#include <string>
#include <algorithm>

#define N 120

using namespace std;

int main() {
    int n, d;
    string opponents[N];
    cin >> n >> d;
    for (int i = 0; i < d; ++i) {
        cin >> opponents[i];
    }
    int t = 0, res = 0;
    for (int i = 0; i < d; ++i) {
        int flag = 1;
        for (int j = 0; j < n; ++j) {
            if (opponents[i][j] == '0') {
                flag = 0;
                t++;
                break;
            }
        }
        if (flag == 1) {
            t = 0;
        }
        res = max(res, t);
    }
    cout << res << endl;
    return 0;
}


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月10日 0

暂无评论

推荐阅读
VW0ZAOA6bLNz