社区讨论

90分 help!!!!!!!!!!!!!!!!!

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

讨论操作

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

当前回复
8 条
当前快照
1 份
快照标识符
@mhj2ryog
此快照首次捕获于
2025/11/03 19:47
4 个月前
此快照最后确认于
2025/11/03 19:47
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>

using namespace std;
#define ll long long
int m;
string n;
ll b[100001] , dp[100005] , z[30];
signed main()
{
    cin >> m;
    cin >> n;
    for(int i = 1;i <= min(26,m);i++){
        cin >> b[i];
        for(int j = 1;j <= min(i,26);j++){
            dp[i] = max(dp[i] , b[j]+dp[i-j]);
        }
    }
    // for(int i = 1;i <= m;i++){
    //     cout << dp[i] << " ";
    // }
    int ans = 0;
    int cnt = 0; 
    for(int i = 0 ; i < m;i++){
        z[n[i]-'a'+1]++;
        for(int j = 1;j <= 26;j++){
            if(z[j] > 1){
                for(int k = 1;k <= 26;k++){
                    if(z[k]>0){
                        z[k]--;
                    }
                }
                cnt+=dp[ans];
                ans=0;
                break;
            }
        }
        ans++;
    }
    
    cnt+=dp[ans];
    
    cout << cnt;
	return 0;
}

回复

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

正在加载回复...