POJ3320
2016-05-13 12:15
204 查看
尺取法做,在某个区间[s,t]已经覆盖了所有的知识点的情况。
有了如下的等价关系,所有的知识点被覆盖等价于每个知识点出现的次数不少于1.
附上代码。
有了如下的等价关系,所有的知识点被覆盖等价于每个知识点出现的次数不少于1.
附上代码。
#include<iostream> #include<cstdio> #include<queue> #include<set> #include<algorithm> #include<map> using namespace std; const int MAXN=1E6; int p; int a[MAXN]; set<int> all;//计算全部知识点总数 map<int,int> count;//知识点->出现次数的映射 int main() { scanf("%d",&p); for(int i=0;i<p;i++) scanf("%d",&a[i]); for(int i=0;i<p;i++) all.insert(a[i]); int n=all.size(); //尺取法 int s=0,t=0,num=0; int res=MAXN; while(true) { while(t<p&&num<n) if(count[a[t++]]++==0){ num++; } if(num<n)break; res=min(res,t-s); if(--count[a[s++]]==0){ num--; } } printf("%d\n",res); }
相关文章推荐
- centos 启动后,自动执行自己的脚本。
- service和serviceImpl抽取
- Android Fragment release 有时黑屏解决办法
- 大数据第二天作业
- Visual Studio 换皮肤
- 最全面的前端开发指南
- 我遇见的spring异常及其解决方案(持续更新)
- 2014年第五届蓝桥杯C/C++程序设计本科B组决赛 年龄巧合(结果填空)
- Ubuntu opensips安装流程
- jquery ui widget
- 【LeetCode051】N皇后问题,回溯法,加上一个栈维护结果
- ABAP开发常用的表
- 算法——贝叶斯
- 一个单排程序猿的成长阶段 与 各阶段的花式十八坑
- 简述Linux IO调度的算法
- 简述Linux IO调度的算法
- python numpy的部分函数
- Java中集合Set的用法
- 手机适配
- JSP的9大内置对象和4大域对象