Subsequences (hard version)
CI_is_safe · · 个人记录
Subsequences (hard version)
思路
考虑令
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=110;
int n,m,pre[26],f[N][N];
char s[N];
signed main(){
scanf("%lld%lld%s",&n,&m,s+1);
f[0][0]=1;
for(int i=1;i<=n;++i){
f[i][0]=1;
for(int j=1;j<=n;++j){
f[i][j]=f[i-1][j-1]+f[i-1][j];
if(pre[s[i]-'a'])f[i][j]-=f[pre[s[i]-'a']-1][j-1];
}
pre[s[i]-'a']=i;
}
long long ans=0;
for(int j=n;j>=0;--j){
if(m>=f[n][j]){
ans+=1ll*(n-j)*f[n][j];
m-=f[n][j];
}
else{
ans+=1ll*(n-j)*m;
m=0;
break;
}
}
if(m)puts("-1");
else printf("%lld",ans);
return 0;
}