CodeForces 701C They Are Everywhere】的更多相关文章

题目链接:http://codeforces.com/problemset/problem/701/C 题意:找到字符串中能包含所有元素的最短字符串长度. 利用“滑动窗口”解题 解题思路: 1. 遍历找到所有元素进行统计,元素数sum 2.设置两个”指针“ st.en,双重while 循环 3.先清空dp[]数组,进行统计 双重while 第一个 whielt(st<n) { 内部while(en<n&&sum!=sum1)//sum1统计元素个数 {//内部while sum…
[题目链接] http://codeforces.com/problemset/problem/701/C [题目大意] 给出 一个字符串,里面包含一定种类的字符,求出一个最短的子串,使得其包含该字符串中的所有种类的字符 [题解] 利用双指针,每次找到包含所有字符的串,用这个串的长度去更新答案,在判断该字符在选定串中出现次数的时候可以调用map,而统计不同种类字符个数则可以利用STL中的set进行统计. [代码] #include<set> #include<map> #inclu…
C. They Are Everywhere time limit per test: 2 seconds memory limit per test:256 megabytes input: standard input output: standard output Sergei B., the young coach of Pokemons, has found the big house which consists of n flats ordered in a row from le…
[题目链接]:http://codeforces.com/contest/701/problem/C [题意] 让你选择一段最短的区间; 使得这段区间里面包含所有种类的字符; [题解] 之前都是用二分写; 现在会用类似队列的思路写了; 就是先确定左端点; 然后右端点右移; 直到出现所有种类;(这时候右端点就没必要再右移了) 然后右端点不动,右移左端点; 然后如果这时候又没有全部种类,就再右移右端点; O(N)的复杂度吧 [Number Of WA] 0 [完整代码] #include <bits…
双指针. 先统计一下字符种类数$sum$,然后进行尺取. 如果目前的区间$[L,R]$中不同字符个数$k<sum$,那么区间右端往右移动一位,更新种类数. 如果目前的区间$[L,R]$中不同字符个数$k==sum$,更新答案,然后区间左端往右移动一位,更新种类数. #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #include<cstring> #inclu…
简单的尺取法…… 先找到右边界 然后在已经有了所有字母后减小左边界…… 不断优化最短区间就好了~ #include<stdio.h> #include<string.h> #define M(a,b) memset(a,b,sizeof(a)) ]; ]; ]; ]; int sum; int main(){ int n; while(~scanf("%d",&n)){ getchar(); M(zimu,); M(in,false); gets(a);…
这个题比较好的解决办法,我觉得还是map,map的size可以很快的知道我们选了几个字母,而且可以作为计数器,知道每一个字母出现了多少次, erase函数可以清除掉一个元素. 所以,定义两个指针L和R,当选择的数够了sum个以后,我们移动L指针,开始删除字母,直到不满足为止,然后移动R指针,看有没有其他的满足答案,并及时更新答案. 代码及注释如下: ps:被这个题给虐了……(真是有愧于队友赐我的map小王子的称号……) #include<iostream> #include<cstdio…
题目链接: C. They Are Everywhere time limit per test 2 seconds   memory limit per test 256 megabytes input standard input output standard output Sergei B., the young coach of Pokemons, has found the big house which consists of n flats ordered in a row fr…
They Are Everywhere CodeForces - 701C 大B,年轻的口袋妖怪训练师,找到了一个由 n 间从左向右的房间组成的大房子.你可以从街道里走入任何一间房子,也可以从任何一间房子走到街道上.同时,你也可以从左边的一个房间走向右边的房间.房间 1 只和房间2相连 2 并且房间 n 只和房间 n - 1.相连. 在每个房间中恰好有一只某个种类的口袋妖怪,用一个大写或小写字母表示.现在大B要走入其中一间房间,向右走一些房间并捕捉所有路过的房间的口袋妖怪,之后再在某个房间出来.…
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题.. 今天,我们来扒一下cf的题面! PS:本代码不是我原创 1. 必要的分析 1.1 页面的获取 一般情况CF的每一个 contest 是这样的: 对应的URL是:http://codeforces.com/contest/xxx 还有一个Complete problemset页面,它是这样的:…