AtCoder Beginner Contest 332-C - T-shirts

大意

有两种衬衫,初始时你有a衬衫m件,没有b衬衫。穿过的衬衫必须要等到洗完才能继续穿。

接下来n天,每天会做三种活动中的一种:

  • 洗衣服,之前穿过的衬衫都可以再穿。
  • 待家里,两种衬衫都能穿。
  • 打比赛,只能穿b衬衫。

问b衬衫至少买多少件,才能满足这n天的穿着需求。

思路

如果待家里,肯定能穿a衬衫就穿a衬衫,不够才买b衬衫。

记录已经穿了的a衬衫和b衬衫件数,每到洗衣服天就重置使用过的 a衬衫和b衬衫。

期间b衬衫的最大值即为答案。

代码

#include<iostream>
using namespace std;

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);

    int n, m;
    string s;
    cin >> n >> m >> s;
    int p = m, l = 0, b = 0;
    for(int i = 0; i < n; i++){
        if(s[i] == '0') p = m, l = b;
        else if(s[i] == '1'){
            if(p > 0) p--;
            else if(l > 0) l--;
            else b++;
        }else{
            if(l > 0) l--;
            else b++;
        }
    }
    cout << b << endl;
    return 0;
}
上一篇:五一劳动节活动策划案怎么写?


下一篇:5G工业数采网关的功能有哪些?-天拓四方