701 C. They Are Everywhere
链接
[http://codeforces.com/group/1EzrFFyOc0/contest/701/problem/C]
题意
给你一个包含大小写字母长度为n的字符串,让你找包含所有种类字符的最短串
分析
其实这个用尺取法,先从开始找包含各种字符的串,然后不断地贪心取最小ans,具体看代码
代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,i;
string s;
int a[140],b[140];
//freopen("in.txt","r",stdin);
while(cin>>n){
cin>>s;
int sum=0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(i=0;i<n;i++)
a[s[i]]=1;
for(i=50;i<='z';i++)
sum+=a[i];
//cout<<sum<<endl;
memset(a,0,sizeof(a));
int ans=n,st=0,cnt=0;
for(i=0;i<n;i++){
if(s[i]>='a'&&s[i]<='z'){
if(!a[s[i]-'a']){
cnt++;
}
a[s[i]-'a']++;
}
else {
if(!b[s[i]-'A'])
cnt++;
b[s[i]-'A']++;
}
if(cnt==sum){
while(cnt==sum){
if(i-st+1<ans) ans=i-st+1;
if(s[st]>='a'&&s[st]<='z'){
a[s[st]-'a']--;
if(!a[s[st]-'a'])
cnt--;
}
else {
b[s[st]-'A']--;
if(!b[s[st]-'A'])
cnt--;
}
st++;
}
}
}
cout<<ans<<endl;
}
return 0;
}
701 C. They Are Everywhere的更多相关文章
- 1Z0-053 争议题目解析701
1Z0-053 争议题目解析701 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 701.A user receives the following error while per ...
- SQL 2008执行语句遇到内存不足(1)——error 701
原文:SQL 2008执行语句遇到内存不足(1)--error 701 转自:http://blogs.msdn.com/b/apgcdsd/archive/2011/01/17/sql-2008-e ...
- uva 701 - The Archeologists' Dilemma
题目链接:uva 701 - The Archeologists' Dilemma 题目大意:给出x,求一个e,使得x * 10 ^ y ≤ 2 ^ e < (x + 1) * 10 ^ y. ...
- IOS 拨打电话:4006 701 855 苹果中国
IOS 拨打电话:4006 701 855 苹果中国
- codeforces 701 E. Connecting Universities(树+ 边的贡献)
题目链接:http://codeforces.com/contest/701/problem/E 题意:有n个城市构成一棵树,一个城市最多有一个学校,这n个城市一共2*k个学校,要对这2*k个学校进行 ...
- codeforces 701 D. As Fast As Possible(数学题)
题目链接:http://codeforces.com/problemset/problem/701/D 题意:给你n个人,每个人走路的速度v1,有一辆车速度为v2,每次可以载k个人,总路程为l,每个人 ...
- Java实现 LeetCode 701 二叉搜索树中的插入操作(遍历树)
701. 二叉搜索树中的插入操作 给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树. 返回插入后二叉搜索树的根节点. 保证原始二叉搜索树中不存在新值. 注意,可能存在多种有效的插入 ...
- uva 701
参考了一下http://hi.baidu.com/renxl51/item/e80b688f9f54aadd5e0ec1de 给一个数字x,求最小的正整数e,使得pow(2,e) == x*pow(1 ...
- T-SQL的进阶:超越基本级别3:构建相关子查询——701小组
T-SQL的进阶:超越基本级别3:构建相关子查询 格雷戈里·拉森,2014/03/05 原文链接: http://www.sqlservercentral.com/articles/Stairway+ ...
随机推荐
- (一)helloworld
欢迎来到windows编程的世界,先给我们的windows打个招呼吧: #include <Windows.h> #include <iostream> using names ...
- Linux 小知识翻译 - 「Linux之父 Linus」
作为新年的第一次,这次想简单介绍下Linus这个人.(这篇文章是作者新年初写的,所以有这么句话) Linux之父,同时也是现在linux内核开发最终决定的人物就是「Linus Torvalds」.「L ...
- 微软公布针对最新IE漏洞的安全通报2963983
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/MSSecurity/article/details/24637607 微软于昨天公布了一篇最新 ...
- centos7下安装docker(5镜像命名)
1.前面我制作了很镜像,利用docker images可以看到我自己制作的所有的镜像 第一列 是我利用docker build -t 镜像名 制作镜像指定的镜像名,但是它对应的是REPOSITO ...
- 最好的8个 Java RESTful 框架
原文出处: colobu 过去的每一年,涌现出越来越多的Java框架.就像JavaScript,每个人都认为他们知道一个好的框架的功能应该是怎么样的.连我的老祖母现在也使用 一个我从来没有听说过而且可 ...
- Android集成讯飞语音、百度语音、阿里语音识别
项目实践:https://blog.csdn.net/Jsagacity/article/details/80094164 demo下载地址:https://fir.im/jy28 demo源码:ht ...
- UCML 参与者关键 与依赖关联外键
- Qt+QGIS二次开发:向shp矢量图层中添加新的字段
添加一个新的字段到shp文件中,并且从Excel里导入数据到该字段.原shp文件里的字段ID应该与Excel里的字段ID一一对应才能正确的导入.下图分别是shp的字段和Excel的字段 将class字 ...
- Qt5.9一个简单的多线程实例(类QThread)(第一种方法)
Qt开启多线程,主要用到类QThread.有两种方法,第一种用一个类继承QThread,然后重新改写虚函数run().当要开启新线程时,只需要实例该类,然后调用函数start(),就可以开启一条多线程 ...
- 笔记二:常用的h5语义化标签
0.前言: 所谓语义化标签就是一种 我们仅通过标签名就能判断出该标签内容的语义的标签,见名知意. 总结这部分内容,主要是为了能从繁琐的div嵌套div中,改成带有h5标签码.这样更有利于读写代码. 人 ...