题解 P5650 【基础字符串练习题】
嗯,这道题有点水。。
就是求一个最大子段和
解法
显然我们可以求前缀和,然后求解,但是有点慢?吧
这里介绍一种新的
又显然
我们可以:
遇到
遇到
设一个
最后奉上代码,码风炸裂,大佬勿喷。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
inline int max(int x,int y){return x>y?x:y;}
#define int ll
int n;char s[100501];
signed main()
{
cin>>s;int ans1=0,ans2=-1;
n=strlen(s);
for(int i=0;i<n;i++){
int tmp=s[i]-'0';
if(tmp==0){
ans1++;
ans2=max(ans1,ans2);
}
else
ans1=max(0,ans1-1);
}
cout<<ans2;
}
谢谢观看!