社区讨论

0分求条

P14075[GESP202509 六级] 划分字符串参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mhj3p71p
此快照首次捕获于
2025/11/03 20:13
4 个月前
此快照最后确认于
2025/11/03 20:13
4 个月前
查看原帖
CPP
//样例全对啊,为啥
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 5;
ll a[N], n, dp[N];
string s;

int dfs(int len) {
    if (dp[len] != -1) {
        return dp[len];
    }
    if (len == 0) {
        return 0;
    }
    ll maxx = 0;
    unordered_set<char> st;
    for (int j = len - 1; j >= 0; j --) {
        if (st.find(s[j]) != st.end()) {
            break;
        }
        st.insert(s[j]);
        maxx = max(maxx, a[len - j] + dfs(j));
    }
    dp[len] = maxx;
    return dp[len];
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    cin >> n;
    cin >> s;
    for (int i = 1; i <= n; i ++) {
        cin >> a[i];
    }
    memset(dp, -1, sizeof(dp));
    cout << dfs(n);
    return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...