C-小红的 01 消除_“葡萄城杯”牛客周赛 Round 53 (nowcoder.com)
思想
我们统计每个1前的0的个数.每遇见一个0就cnt0++,然后就向后匹配1,配到一个1,就cnt0--,然后执行一次操作2删掉01
总结:遇见0就cnt0++,遇见1就执行操作2(如果0的数量不为空的话)
#include<bits/stdc++.h>
using namespace std;
int cnt0;
int ans;
int main()
{
int n;cin>>n;
string s;cin>>s;
int a,b,c;cin>>a>>b>>c;
for(int i=0;i<s.size();i++)
{
if(s[i]=='0')cnt0++;
else if(cnt0)
{
cnt0--,ans++;
}
}
cout<<min(ans,b)<<endl;
return 0;
}