CF1107E Vasya and Binary String
发布时间:2020-12-14 04:26:14 所属栏目:大数据 来源:网络整理
导读:比赛的时候又被垃圾题艹翻了
比赛的时候又被垃圾题艹翻了啊。 #include<iostream> #include<cctype> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<ctime> #include<cstdlib> #include<algorithm> #define N 110 #define L 100 #define eps 1e-7 #define inf 1e9+7 #define db double #define ll long long #define ldb long double using namespace std; inline ll read() { char ch=0; ll x=0,flag=1; while(!isdigit(ch)){ch=getchar();if(ch==‘-‘)flag=-1;} while(isdigit(ch)){x=(x<<3)+(x<<1)+ch-‘0‘;ch=getchar();} return x*flag; } char s[N]; ll a[N],f[N],dp[N][N][N][2]; ll dfs(ll l,ll r,ll k,ll flag) { if(l>r)return a[k]; if(dp[l][r][k][flag]!=-1)return dp[l][r][k][flag]; if(!k||(k&&f[l]==flag)) dp[l][r][k][flag]=max(dp[l][r][k][flag],dfs(l+1,r,k+1,f[l])); for(ll i=l;i<=r;i++) dp[l][r][k][flag]=max(dp[l][r][k][flag],dfs(l,i,0)+dfs(i+1,k,flag)); for(ll i=1;i<=k;i++) dp[l][r][k][flag]=max(dp[l][r][k][flag],k-i,flag)+a[i]); return dp[l][r][k][flag]; } int main() { ll n=read(); scanf("%s",s+1); for(ll i=1;i<=n;i++)a[i]=read(),f[i]=s[i]-‘0‘; memset(dp,-1,sizeof(dp)); printf("%lld",dfs(1,n,0)); return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |