题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=5672

题意:

有一个10≤长度≤1,000,000的字符串,仅由小写字母构成。求有多少个子串,包含有至少k(1≤k≤26)个不同的字母?

分析:

很典型的尺取法。

不断依次移动区间的头尾,使区间满足条件,并找到这样的区间个数。

注意说的是包含至少k个,所以只要找到正好包含k个的区间,然后加上包含后面的串的个数就好了。

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn = 1e6 + 5;
char s[maxn];
int c[26 + 5];
int main (void)
{
int T;scanf("%d", &T);
while(T--){
scanf("%s", s);
int k;scanf("%d", &k);
int len = strlen(s);
int l = 0, r = 0;
int cnt = 0;
long long ans = 0;
memset(c, 0, sizeof(c));
while(l <= r && l < len){
while(cnt < k && r <len){
c[s[r] -'a']++;
if(c[s[r]-'a'] == 1) cnt++;
r++;
}
if(cnt == k) ans += len - r + 1;
if(c[s[l]-'a'] == 1) cnt--;
c[s[l]-'a']--;
l++;
}
printf("%I64d\n", ans);
}
}

HDU 5672 String【尺取法】的更多相关文章

  1. hdu 5672 String 尺取法

    String Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem D ...

  2. HDU 5672 String 尺取法追赶法

    String Problem Description There is a string S.S only contain lower case English character.(10≤lengt ...

  3. Codeforces Round #354 (Div. 2)_Vasya and String(尺取法)

    题目连接:http://codeforces.com/contest/676/problem/C 题意:一串字符串,最多改变k次,求最大的相同子串 题解:很明显直接尺取法 #include<cs ...

  4. HDU 5672 String 【尺取】

    <题目链接> 题目大意:给定一个只由26个小写字母组成的字符串,现在问你至少包含k个不同字母的连续子序列总数有多少. 解题分析:经仔细研究,我们发现,每次尺取到符合要求的最小区间,然后将区 ...

  5. HDU 5672 String

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5672 bc(中文):http://bestcoder.hdu.edu.cn/contests ...

  6. HDU 4123 (2011 Asia FZU contest)(树形DP + 维护最长子序列)(bfs + 尺取法)

    题意:告诉一张带权图,不存在环,存下每个点能够到的最大的距离,就是一个长度为n的序列,然后求出最大值-最小值不大于Q的最长子序列的长度. 做法1:两步,第一步是根据图计算出这个序列,大姐头用了树形DP ...

  7. hdu 5510 Bazinga KMP+尺取法

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5510 题意:至多50组数据,每组数据至多500个字符串,每个字符串的长度最长为2000.问最大的下标( ...

  8. Vasya and String(尺取法)

    Vasya and String time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  9. HDU 6103 Kirinriki(尺取法)

    http://acm.hdu.edu.cn/showproblem.php?pid=6103 题意: 给出一个字符串,在其中找两串互不重叠的子串,计算它们之间的dis值,要求dis值小于等于m,求能选 ...

随机推荐

  1. 单元测试神器Mockito

    Mockit是一种mock工具/框架.mock可以模拟各种各样的对象,从而代替真正的对象做出希望的响应 1.工程中引入Mockito #以gradle的方式为例 testCompile("o ...

  2. Django运行错误常见问题及解决方法1

    如果不是在JetBrains PyCharm 2017.2里创建的想在JetBrains PyCharm 2017.2里运行.可以在   编辑结构  进行配置正常使用

  3. Hdu 4965(矩阵快速幂)

    题目链接 Fast Matrix Calculation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K ...

  4. 英特尔人工智能圆桌论坛举行 四位大咖论道AI

    英特尔人工智能圆桌论坛举行 四位大咖论道AI 2017-04-01 17:57     北京2017年4月1日电 /美通社/ -- 毫无疑问,人工智能已是最具变革力的发展趋势之一,在3月31日举行的2 ...

  5. Activity、FragmentActivity和AppCompatActivity的区别

    Activity Activity是最基础的一个,是其它类的直接或间接父类. Activity中只能使用系统自带的host Fragment(API Level 11中加入),对应getFragmen ...

  6. CesiumLab V1.4 新功能 BIM数据处理

    我也没想到,BIM数据处理一下拖了这么久才有个交代.我们照例先放图   Revit官方的示例数据   隐藏屋顶+俯视   曾经因为太大而无法导出无法处理的医院模型   室内装修方案模型 最近和很多做b ...

  7. HTML:如何将网页分为上下两个部分

    1.使用table: <table>  <tr>    <td height="80%"><jsp:include page=" ...

  8. 学习线程池源码--ScheduledThreadPoolExecutor

    1. 创建ScheduledThreadPoolExecutor        ScheduledThreadPoolExecutor继承自ThreadPoolExecutor,实现了Schedule ...

  9. NOIP模拟题17.9.26

    B 君的任务(task)[题目描述]与君初相识,犹如故人归.B 君看到了Z 君的第一题,觉得很难.于是自己出了一个简单题.你需要完成n 个任务,第i 任务有2 个属性ai; bi.其中ai 是完成这个 ...

  10. wordpress主题之后台菜单编辑,小工具

    1一:菜单编辑 在functions.php 文件加入 if (function_exists('register_nav_menus')) { register_nav_menus(array( / ...