題目鏈接:BestCoder Round #81 (div.2) 1003 String
中文題,上有鏈接,就不貼了。
枚舉起點i,計算可以達到k個不同字母的最小下標j,則此時有子串len-j個。
將所有起點的值加起來即是結果。
#include
#include
#include
using namespace std;
#define LL long long
const int MOD = 1000000007;
char str[1000009];
int num[27];
int get_cnt()
{
int cnt = 0;
for(int i=0; i<26; i++)
cnt += num[i]==0?0:1;
return cnt;
}
int main()
{
int T;
cin>>T;
while(T--)
{
int k;
memset(num, 0, sizeof(num));
scanf("%s%d", str, &k);
int len = strlen(str);
LL ans = 0;
int j = -1;
bool flag = false;
for(int i=0; i