题意:求不被认同的字符串使用不超过k次的子串的个数
解法:直接取一个素数对字符串hash然后扔进set里面就可以了 string真的不行 太慢了
#include<set>
#include<map>
#include<cstdio>
#include<iostream>
#include<string.h>
using namespace std;
#define maxn 11111
#define mul 1000000007
#define ll long long
char s[maxn],ss[maxn];
int k;
set<ll>se;
int main(){
scanf("%s%s%d",s,ss,&k);
string sd;int cnt;ll id;
int l=(int)strlen(s);
for(int i=0;i<l;++i){
cnt=0;id=(ll)0;
for(int j=i;j<l;++j){
id=id*mul+s[j];
cnt+=ss[s[j]-'a']=='0';
if(cnt>k)break;
se.insert(id);
}
}
// for(set<int>::iterator it=se.begin();it!=se.end();++it){
// printf("%d\n",*it);
// }
int ans=(int)se.size();
printf("%d\n",ans);
return 0;
}