hdu5672 string(尺取法)

原创 2016年06月01日 21:36:53

String
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 1332 Accepted Submission(s): 445

Problem Description
There is a string S.S only contain lower case English character.(10≤length(S)≤1,000,000)
How many substrings there are that contain at least k(1≤k≤26) distinct characters?

Input
There are multiple test cases. The first line of input contains an integer T(1≤T≤10) indicating the number of test cases. For each test case:

The first line contains string S.
The second line contains a integer k(1≤k≤26).

Output
For each test case, output the number of substrings that contain at least k dictinct characters.

Sample Input

2
abcabcabca
4
abcabcabcabc
3

Sample Output

0
55

#include<cstdio>
#include<cstring>

const int maxn=1000005;
char a[maxn];
int dig[27];

int main() {
    int T;
    scanf("%d",&T);
    while(T--) {
        int k;
        memset(a,0,sizeof(a));
        scanf("%s%d",a,&k);
        int len=strlen(a);
        long long ans=0;
        memset(dig,0,sizeof(dig));
        int s=0,t=-1,num=0;
        while(t<len&&s<len) {
            while(num<k&&(++t)<len) {
                if(!dig[a[t]-'a'])++num;
                ++dig[a[t]-'a'];
            }
            if(num==k)
            ans+=(len-t);
            if(--dig[a[s]-'a']==0)--num;
            ++s;
        }
        printf("%lld\n",ans);
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

算法学习之尺取法

连续区间覆盖问题
  • cumtcyf
  • cumtcyf
  • 2016年07月31日 16:56
  • 848

hdu5672尺取法

String Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total S...
  • qq_35710556
  • qq_35710556
  • 2016年07月31日 18:10
  • 103

ACM常用的解题技巧:尺取法

常用的解题技巧:尺取法 尺取法:顾名思义,像尺子一样取一段,借用挑战书上面的话说,尺取法通常是对数组保存一对下标,即所选取的区间的左右端点,然后根据实际情况不断地推进区间左右端点以得出答案。之所以需要...
  • consciousman
  • consciousman
  • 2016年08月28日 22:34
  • 3888

HDU 5056 双指针(也叫窗口滑动(也叫尺取法))

Description You are given a string S consisting of lowercase letters, and your task is counting the...
  • became_a_wolf
  • became_a_wolf
  • 2015年08月23日 21:35
  • 746

POJ-3279-尺取法

题目大意:给定一张n*m的方格图,有白黑两种颜色,每次可以选取一个十字进行翻转,白变成黑,黑变成白,问最少需要翻转几次,如果有重复的,按字典序最小的进行输出; 题目解析:开关问题,这道题跟7276很...
  • zyz_3_14159
  • zyz_3_14159
  • 2016年11月13日 12:43
  • 187

3.2常用技巧精选(一) 挑战程序设计竞赛

本文来自《挑战程序设计竞赛》3.2常用技巧精选(一) 1.尺取法 尺取法通常是指对数组保存一对下标(起点、终点),然后根据实际情况交替推进两个端点直到得出答案的方法。 1.Subsequence(Po...
  • qq_33929112
  • qq_33929112
  • 2016年09月09日 21:43
  • 309

NOIP复赛复习(十七)尺取法与折半枚举

一、尺取法  尺取法:顾名思义,像尺子一样取一段,借用挑战书上面的话说,尺取法通常是对数组保存一对下标,即所选取的区间的左右端点,然后根据实际情况不断地推进区间左右端点以得出答案。之所以需要掌握...
  • dqcsm1964
  • dqcsm1964
  • 2017年11月06日 13:57
  • 60

算法--尺取法

尺取法通常是指对数组保存一对下标(起点,终点),然后根据实际情况交替推进两个端点直到得出答案的方法,这种操作很像是尺取虫爬行的方式故得名。...
  • qq_29600137
  • qq_29600137
  • 2016年03月10日 11:00
  • 359

尺取法+POJ3320

Jessica's a very lovely girl wooed by lots of boys. Recently she has a problem. The final exam is co...
  • qq_34649947
  • qq_34649947
  • 2017年05月12日 21:26
  • 67

F.巴啦啦能量 【尺取法】

F.巴啦啦能量 Time Limit: 2500 MS Memory Limit: 256000 K Total Submit: 70 (24 users) Total Accepted: ...
  • m0_37719760
  • m0_37719760
  • 2017年11月20日 18:48
  • 136
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu5672 string(尺取法)
举报原因:
原因补充:

(最多只允许输入30个字)