poj 3320 Jessica's Reading Problem
来源:互联网 发布:java list排序算法 编辑:程序博客网 时间:2024/05/19 19:39
题意:求最少复习天数 && 可以复习完书本全部知识点;
思路: 用俩个下标st ed 去扫描;中间用map 去维护区间 [st, ed] 的知识点涵盖情况;
时间复杂度: O(nlogn) map 的复杂度;
#include<stdio.h>#include<string.h>#include<math.h>#include<string>#include<iostream>#include<algorithm>#include<vector>#include<queue>#include<list>#include<map>#include<set>using namespace std;const int N=1000010;int n, allkind ;int a[ N ];int b[ N ];map<int,int>cnt;void deal_init(){ for(int i = 0 ; i < n ; i ++){ scanf("%d", &a[ i ] ) ; b[ i ] = a[ i ]; } sort(b, b+n); allkind=unique(b , b + n) - b ;// cout << allkind << endl;}void work(){ cnt.clear(); int st=0,ed=0; int num = 0, ans=N+100; while( st < n ){ while( ed < n && num < allkind ){ int tp = cnt[ a[ed++] ]++; if( tp == 0 ) num ++ ; } if( num < allkind ) break; ans = min( ans , ed-st); int tp = cnt [ a[st++] ]--; if(tp == 1 ) num -- ; } cout << ans << endl;}int main(){//freopen("in.in","r",stdin);while(~scanf("%d",&n)){ deal_init(); work();}return 0;}
0 0
- POJ:3320 Jessica's Reading Problem
- poj 3320 Jessica's Reading Problem
- poj 3320 Jessica's Reading Problem
- POJ-3320-Jessica's Reading Problem
- POJ 3320 Jessica's Reading Problem
- poj 3320 Jessica's Reading Problem
- Jessica's Reading Problem POJ 3320
- POJ 3320 Jessica's Reading Problem
- POJ 3320 Jessica's Reading Problem
- POJ 3320 Jessica's Reading Problem
- POJ-3320 Jessica's Reading Problem
- poj 3320 Jessica's Reading Problem
- POJ 3320 Jessica's Reading Problem
- poj 3320 Jessica's Reading Problem
- POJ 3320 Jessica's Reading Problem
- poj-3320-Jessica's Reading Problem
- POJ 3320 Jessica's Reading Problem
- poj 3320 Jessica's Reading Problem
- ubuntu设置开机启动图形应用程序,替换默认图形桌面
- Qt - QTimer更新ui
- C++实现开机启动
- HDU 1082
- size_type与size_t的机器无关性
- poj 3320 Jessica's Reading Problem
- POJ 1006 Biorhythms
- LeetCode: Max Points on a Line
- 树链剖分-链的剖分(线段树维护+离线操作)
- 关于ios越狱开发的那些事
- 7518爱的是看了就关联方看见过开了房7518季后赛的规范健康
- 微软MSDN订阅介绍
- cmake函数参数解析
- VC 调用 VB 的DLL