题目喵~按题解写的却错啦。。喵呜~
#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
string s;
int n,k,a[30],dp[30][1010],num;
int main(){
cin>>n>>k;
for(int i=1;i<=26;i++){
cin>>a[i];
}
cin>>s;
for(int i=0;i<n;i++){
a[s[i]-'a'+1]--;
}
num=k-n;
for(int i=0;i<=min(a[1],num);i++){
dp[1][i]=1;
}
for(int i=2;i<=26;i++){
if(a[i]<0){
cout<<"NO SOLUTION!";
return 0;
}
for(int j=1;j<=num;j++){
for(int k=0;k<=min(a[i],j);k++){
dp[i][j]=(dp[i][j]+dp[i-1][j-k])%mod;
}
}
}
cout<<dp[26][num];
return 0;
}