“葡萄城杯”牛客周赛 Round 53 C-小红的 01 消除 题型:01 10 11类子串问题

101 阅读1分钟

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;
}

image.png