hdu 5056

来源:互联网 发布:淘宝开放平台的api 编辑:程序博客网 时间:2024/06/06 14:20

题目链接


题目大意:计算在子串中每个小写字母出现次数不超过k次的个数


官方题解:


#include<iostream>#include<cmath>#include<cstring>#include<algorithm>#include<stdio.h>using namespace std;char str[100010];int cnt[30];int main(){    int T,k,i;    scanf("%d",&T);    while(T--)    {        memset(str,0,sizeof(str));        memset(cnt,0,sizeof(cnt));        scanf("%s%d",str,&k);        int len=strlen(str);        int starPos=0;        __int64 ans=0;        for(i=0;i<len;i++)        {            cnt[str[i]-'a']++;            if(cnt[str[i]-'a']>k)            {                while(str[starPos]!=str[i])                {                    cnt[str[starPos]-'a']--;                    starPos++;                }                cnt[str[starPos]-'a']--;                starPos++;            }            ans+=(i-starPos+1);        }        printf("%I64d\n",ans);    }    return 0;}


参考博客一

参考博客二

参考博客三


0 0