POJ-3320-Jessica's Reading Problem
2014-03-20 19:57
190 查看
题目大意是说给你n个数,让你找到一个连续的最短区间,使得区间内含有所有n个数里面所出现的不同数。
思路:维护一个队列即可~
需要注意一点的是,判重只能用STL,因为数据量很大
代码:
思路:维护一个队列即可~
需要注意一点的是,判重只能用STL,因为数据量很大
代码:
#include<cstdio> #include<cstring> #include<iostream> #include<set> #include<map> using namespace std; const int maxn=1e6+1000; int n,a[maxn],ans; set<int> s; map<int,int> f; int main() { while(scanf("%d",&n)!=EOF) { s.clear(); f.clear(); for(int i=0;i<n;i++) { scanf("%d",&a[i]); s.insert(a[i]); } int cnt=s.size(),pre=0,last=0,now=0; ans=n; while(1) { while(last<n&&now<cnt) { if(!f[a[last]]) now++; f[a[last++]]++; } while(f[a[pre]]>1) f[a[pre++]]--; if(now==cnt) { ans=min(ans,last-pre); f[a[pre++]]--; now--; } if(last==n) break; } printf("%d\n",ans); } return 0; }
相关文章推荐
- UVa 10282 - Babelfish STL Map
- 对Prim算法求最小生成树(MST)有深入的了解
- Java 8 正式版发布
- Eclipse在linux使用记录
- [Jobdu OJ] 1006 ZOJ问题
- 三角形---求最大周长
- 【poj2157】Maze
- linux gdb调试命令小助手
- 如何设定指定logger的日志级别
- Zdenek Kalal跟踪算法
- EXCEL与SQL数据库间导入导出之傻瓜闲扯淡
- [学习笔记]循环队列和队列的链式结构
- CakePHP是什么?为什么要使用它呢?
- LeetCode之Binary Tree Inorder Traversal
- poj 3320 Jessica's Reading Problem
- Adlist 双向链表的实现 redis
- Android经典的大牛博客推荐
- Hibernate中的session对象update方法的使用
- LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- jq对象和DOM对象的互换