hdoj 5672 String 【模拟】
来源:互联网 发布:魅可mac加盟电话 编辑:程序博客网 时间:2024/06/06 02:44
题目链接:hdoj 5672 String
有一个 10≤长度≤1,000,000 的字符串,仅由小写字母构成。求有多少个子串,包含有至少k(1≤k≤26)个不同的字母?
模拟,维护一个左端点就可以了。
AC代码:
#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using namespace std;typedef long long LL;const int MAXN = 1e6 + 10;char str[MAXN];int num[30];int main(){ int t; scanf("%d", &t); while(t--) { scanf("%s", str); int len = strlen(str); int n; scanf("%d", &n); for(int i = 0; i <= 25; i++) num[i] = 0; LL ans = 0; int cnt = 0; int j = 0; for(int i = 0; i < len; i++) { int v = str[i] - 'a'; if(num[v] == 0) { cnt++; } num[v]++; if(cnt == n) { ans += len - i; for(; j <= i; j++) { v = str[j] - 'a'; num[v]--; if(num[v] == 0) { j++; cnt--; break; } ans += len - i; } } //cout << ans << ' ' << j << endl; } printf("%I64d\n", ans); } return 0;}
0 0
- hdoj 5672 String 【模拟】
- HDOJ 5414 CRB and String 模拟
- HDOJ 5672 String
- hdoj.2137 circumgyrate the string【模拟】 2015/08/26
- HDU 5672:String【模拟】
- String hdoj 5672(字符串追赶)
- hdoj String 5672 (字符串模拟)求至少有k个不重复的字符的子串个数
- hdoj 5672 String (尺取法)
- 模拟String
- [HDOJ 4964] Emmet [模拟]
- 【模拟】 HDOJ 5071 Chat
- HDOJ 5071 Chat 模拟
- HDOJ 4690 EBCDIC 模拟
- HDOJ 1014 模拟
- HDOJ-5211Mutiple(模拟)
- hdoj 5240 Exam 【模拟】
- HDOJ 5353 Average 模拟
- HDOJ 5510-Bazinga【模拟】
- poj 1952buy low, buy lower
- hdoj 5671 Matrix 【思维】
- C++作业4
- 计算文本的实际大小
- 第9周项目3——人数不定的工资类
- hdoj 5672 String 【模拟】
- git使用步骤
- lib静态库、dll动态库
- 【结构型模式】组合模式(Composite)之23种java设计模式
- hdoj 5673 Robot 【默慈金数】
- LeetCode——052
- 使用idfc-proguard-maven-plugin混淆优化Jave Web工程二
- 目标检测的图像特征提取之(一)HOG特征
- 数组长度的获取