按照 Danhengyinyue
大神的方法写挂了,tql帮忙调一下。
code:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double dbl;
int n, m;
int a[25], p[25]; string s;
int ans;
inline bool abc(int i){
return s.substr(i, 3) == string("abc");
}
int main(){
scanf("%d", &n);
for (int i = 1; i <= n; i++) scanf("%d", a+i);
for (int i = 1; i <= n; i++)
for (int j = max(i - n, 0); j < i; j++)
p[i] = max(p[i], a[i-j] + p[j]);
scanf("%d", &m);
cin >> s;
int cnt = 0;
for (int i = 0; i < m - 2;){
if (abc(i)){
cnt++;
i += 3;
}
else{
ans += p[cnt];
cnt = 0;
i++;
}
}
ans += p[cnt];
printf("%d\n", ans);
return 0;
}