#include<bits/stdc++.h>
#define int long long
using namespace std;
int f[2][2000010];
int mini,maxx;
signed main(){
int n;
cin>>n;
memset(f,-1145141919,sizeof f);//看这里的数字
f[0][1000005]=0;
for(int i=1,s=0,c=0;i<=n;i++,s=0,c=0){
string x;
cin>>x;
for(int j=0;j<x.size();j++)
s+=(x[j]=='s'),c+=(x[j]=='c');
int v=s,w=s-c;
mini=min(mini,mini+w),maxx=max(maxx,maxx+w);
for(int j=mini;j<=maxx;j++)
f[i%2][j+1000005]=
max({f[i%2][j+1000005],
f[(i+1)%2][j+1000005],
f[(i+1)%2][j-w+1000005]+v});
}
cout<<f[n%2][1000005];
return 0;
}
https://www.luogu.com.cn/record/161983224
#include<bits/stdc++.h>
#define int long long
using namespace std;
int f[2][2000010];
int mini,maxx;
signed main(){
int n;
cin>>n;
memset(f,-114514191,sizeof f);//再看这里的数字
f[0][1000005]=0;
for(int i=1,s=0,c=0;i<=n;i++,s=0,c=0){
string x;
cin>>x;
for(int j=0;j<x.size();j++)
s+=(x[j]=='s'),c+=(x[j]=='c');
int v=s,w=s-c;
mini=min(mini,mini+w),maxx=max(maxx,maxx+w);
for(int j=mini;j<=maxx;j++)
f[i%2][j+1000005]=
max({f[i%2][j+1000005],
f[(i+1)%2][j+1000005],
f[(i+1)%2][j-w+1000005]+v});
}
cout<<f[n%2][1000005];
return 0;
}
https://www.luogu.com.cn/record/161983554
啊?