1 条题解
-
0
C++ :
#include <algorithm> #include <cstdio> #include <vector> using namespace std; const int N = 1e5 + 5; int n; char s[N]; int a[N]; long long f[N]; int main() { scanf("%d", &n); scanf("%s", s + 1); for (int i = 1; i <= n; i++) scanf("%d", &a[i]); for (int i = 1; i <= n; i++) { int mask = 0; for (int j = i; j; j--) { int cur = 1 << (s[j] - 'a'); if (mask & cur) break; mask |= cur; f[i] = max(f[i], f[j - 1] + a[i - j + 1]); } } printf("%lld\n", f[n]); return 0; }
- 1
信息
- ID
- 715
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者