大意
有两种衬衫,初始时你有a衬衫件,没有b衬衫。穿过的衬衫必须要等到洗完才能继续穿。
接下来天,每天会做三种活动中的一种:
- 洗衣服,之前穿过的衬衫都可以再穿。
- 待家里,两种衬衫都能穿。
- 打比赛,只能穿b衬衫。
问b衬衫至少买多少件,才能满足这天的穿着需求。
思路
如果待家里,肯定能穿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;
}