Codeforces Round #581 (Div. 2) D2. Kirk and a Binary String (hard version)(思维)

题目链接
Codeforces Round #581 (Div. 2)  D2. Kirk and a Binary String (hard version)(思维)
Codeforces Round #581 (Div. 2)  D2. Kirk and a Binary String (hard version)(思维)
思路:看了一下大佬的方法,真的是惊叹不已呀,O(n)就可以出结果了。。。
想想看把哪些位置的1变为0不会影响LIS呢,其实当某一位为1的时候只要它后面的1的个数大于0的个数的话就不会影响了,所以我们从后往前枚举。

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+1;
char s[maxn];
int main()
{
	scanf("%s",s);
	int len=strlen(s),cnt=0;
	for(int i=len-1;i>=0;--i)
	{
		if(s[i]=='0') cnt++;
		else if(s[i]=='1'&&cnt>0) cnt--;
		else if(s[i]=='1'&&cnt==0) s[i]='0';
	}
	printf("%s\n",s);
}
Codeforces Round #581 (Div. 2)  D2. Kirk and a Binary String (hard version)(思维)Codeforces Round #581 (Div. 2)  D2. Kirk and a Binary String (hard version)(思维) qq_42479630 发布了138 篇原创文章 · 获赞 0 · 访问量 4677 私信 关注
上一篇:力扣编程题分析(581):最短无序连续子数组


下一篇:go语言 类型:整型