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

String Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) 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…
String 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 lin…
<题目链接> 题目大意:给定一个只由26个小写字母组成的字符串,现在问你至少包含k个不同字母的连续子序列总数有多少. 解题分析:经仔细研究,我们发现,每次尺取到符合要求的最小区间,然后将区间的右端点一直移动到字符串的末尾,右端点每移动一位,又能组成一个符合条件的字符串序列,并且,因为每次尺取的过程中,左指针会不断向右移动一位,所以这样的求解能够是的最终的答案不重不漏. #include <bits/stdc++.h> using namespace std; )]; ]; inli…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5672 题意: 有一个10≤长度≤1,000,000的字符串,仅由小写字母构成.求有多少个子串,包含有至少k(1≤k≤26)个不同的字母? 分析: 很典型的尺取法. 不断依次移动区间的头尾,使区间满足条件,并找到这样的区间个数. 注意说的是包含至少k个,所以只要找到正好包含k个的区间,然后加上包含后面的串的个数就好了. 代码: #include<cstdio> #include<cstrin…
题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5672 bc(中文):http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=692&pid=1002 题解: 对于每一个st(0<=st<len),求最小的ed使得str[st...ed]子串刚好包含k个不同的字母,然后累加起来就行了,由于st,ed都是单调不减的,时间复杂度为O(n+n)=O(n)…
http://acm.hdu.edu.cn/showproblem.php?pid=5672 [题意] 给定一个小写英语字母组成的字符串,求这个字符串一共包含多少个至少有m个不同字母的连续子序列 [思路] 尺取. 我们发现,如果i~j是恰好含有k个字母的区间,那么对于k(j<k<=n),i~k是含有至少k个不同字母的子串,那么对于每一个左边界,我们都可以找到一个最小的右边界,使得这个区间恰好含有k个字母,然后统计以这个左边界符合条件的子串个数,找到右边界,用尺取法即可. [Accepted]…
acm.hdu.edu.cn/showproblem.php?pid=5328 [题意] 给定一个长度为n的正整数序列,选出一个连续子序列,这个子序列是等差数列或者等比数列,问这样的连续子序列最长是多少? [思路] 尺取,用来解决这样的问题:需要在给的一组数据中找到不大于某一个上限的“最优连续子序列” 分别用双指针找最长的等差数列和等比数列,找最大值就可以了. 注意a 或者 a b既是等差数列,又是等比数列. [Accepted] #include <iostream> #include &l…
acm.hdu.edu.cn/showproblem.php?pid=3530 [题意] 给定一个长度为n的序列,问这个序列满足最大值和最小值的差在[m,k]的范围内的最长子区间是多长? [思路] 对于序列中特定的位置j,我们固定右端j考察左端i,发现[i,j]内的最大值随i的增大而非严格递减 对于序列中特定的位置j,我们固定右端j考察左端i,发现[i,j]内的最小值随i的增大而非严格递增 所以[i,j]内最大值与最小值的差随i的增大而递减 对于序列中特定的位置i,我们固定左端i考察右端j,发现…
String HDU 5672(双指针) 传送门 题意:一个字符串中找到所有拥有不少于k个不同的字符的子串. import java.io.*; import java.util.*; public class Main { static final int N = 1000005; static final int inf= 0x3f3f3f3f; static final double eps= 1e-5; static int vis[]=new int[27]; static char…
Bob’s Race Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description Bob wants to hold a race to encourage people to do sports. He has got trouble in choosing the route. There are N houses and N - 1 roads…