比赛 2024暑假C班集训7 评测结果 AAAAAAAWWWWWWWWWWWWW
题目名称 游戏 最终得分 35
用户昵称 wdsjl 运行时间 0.268 s
代码语言 C++ 内存使用 4.75 MiB
提交时间 2024-07-07 10:53:47
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;

string s;

const int N = 1010;
const int M = 10000010;
const int Mod = 19930726;
long long tot,n,k,dp[N][N],res[M],ans;

bool cmp(long long x,long long y){
    return x>y;
}

int main(){
    freopen("rehearse.in","r",stdin); 
    freopen("rehearse.out","w",stdout);
    scanf("%lld%lld",&n,&k);
    cin>>s;
//    cout<<s<<endl; 
    int len=s.length();
    if(n>1000){
        printf("-1");
        return 0;
    }
    for(int i=len-1;i>=0;i--){
        for(int j=i;j<=len-1;j++){
            if(s[i]==s[j]){
                if(j-i<=1)dp[i][j]=1,ans++,res[ans]=(j-i+1)%2?j-i+1:0;
                if(j-i>1&&dp[i+1][j-1]==1)dp[i][j]=1,ans++,res[ans]=(j-i+1)%2?j-i+1:0;
            }
//            cout<<i<<" "<<j<<" "<<dp[i][j]<<endl;
        } 
    }
//    for(int i=1;i<=ans;i++)cout<<res[i]<<" ";
//    cout<<endl;
    sort(res+1,res+1+ans,cmp);
    if(ans<k){
        printf("-1");
    }else{
        tot=1; 
        for(int i=1;i<=k;i++)tot=tot*res[i]%Mod;
        printf("%lld",tot);
    }
    return 0;
}