1 条题解
-
0
#include<bits/stdc++.h> using namespace std; int n,arr[50],m; long long dp[100010]; string s; int main(){ cin>>n; for(int i=0;i<n;i++) cin>>arr[i]; cin>>m; cin>>s; string c=""; for(int i=0;i<m;i++){ if(i-2>=0 && (s[i]=='c' && s[i-1]=='b' && s[i-2]=='a')){ c+='A'; i+=2; }else{ c+=s[i]; } } for(int i=0;i<c.size();i++){ if(c[i]=='A') dp[i]=arr[0]; else dp[i]=0; } for(int i=1;i<c.size();i++){ dp[i]=dp[i-1]+dp[i]; if(c[i]!='A') continue; for(int j=i-1;j>=0 && i-j<n;j--){ if(c[j]=='A'){ dp[i]=max(dp[i],dp[j-1]+arr[i-j]); }else{ break; } } } cout<<dp[c.size()-1]; return 0; }
- 1
信息
- ID
- 904
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者