样例过全WA求调QWQ
查看原帖
样例过全WA求调QWQ
1185284
Linktux楼主2025/6/28 21:59
#include <bits/stdc++.h>
using namespace std;
int n,m,a[25],f[25];
string s;
vector<int> v;
void init_v(){
    int i=0,tmp=0;
    while(i<m){
        if(s[i]=='c'&&s[i-1]=='b'&&s[i-2]=='a')++tmp,i+=3;
        else{
            if(tmp){
                v.push_back(tmp);
                tmp=0;
            }
            ++i;
        }
    }
    if(tmp)v.push_back(tmp);
    return;
}//计算s的所有最长abc字串的数量
void init_f(){
    f[1]=a[1];
    for(int i=1;i<=n;++i)for(int j=0;j<=n/2;++j)f[i]=max(f[i],f[j]+f[i-j]);    
}//记录每个长度的字串最大得分
int main(){
    cin>>n;
    for(int i=1;i<=n;++i)cin>>a[i];
    cin>>m>>s;
    init_v();
    init_f();
    int ans=0;
    for(int x:v)ans+=f[x];
    cout<<ans<<endl;
    return 0;
}

基本思路就是先计算所有最长abc字串的长度,然后再算每个长度为i的字串最大得分f[i],最后再把所有的加起来

2025/6/28 21:59
加载中...