社区讨论

90分求调

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

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@mj8ju18b
此快照首次捕获于
2025/12/16 20:18
3 个月前
此快照最后确认于
2025/12/19 20:40
3 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
long long n,a[100001],dp[100001],see[100001];
string s;
long long sb(long long x){
    long long ans=0;
    for(int i=x-1;i>=1;i--){
        if(s[i]==s[x]||see[i]==1){
            see[x-ans]=1;
            return ans;
        }
        ans++;
    }
    return ans;
}
int main() {
    cin>>n>>s;
    s=' '+s;
    for(long long i=1;i<=n;i++)cin>>a[i];
    for(long long i=1;i<=n;i++){
        long long z=sb(i);
        for(long long j=i-z;j<=i;j++){
            dp[i]=max(dp[j-1]+a[i-j+1],dp[i]);
        }
    }
    cout<<dp[n];
	return 0;
}

回复

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

正在加载回复...