POJ 3320 Jessica's Reading Problem

来源:互联网 发布:点赞功能数据库设计 编辑:程序博客网 时间:2024/06/11 12:59

原题链接

思路:尺取法。

AC代码:

#include <cstdio>  #include <cstring>  #include <algorithm>  #include <iostream>  #include <set>  #include <map>using namespace std;int n, page, ans, p[1000000];int i, cnt, s, e;set<int> all;map<int, int> t;int main(){    scanf("%d", &page);    for(i = 0; i < page; i++){        scanf("%d", &p[i]);        all.insert(p[i]);    }    n = all.size();    cnt = 0, s = 0, e = 0, ans = page;    while(1){        while(cnt < n && e < page){            if(t[p[e]] == 0)  cnt++;            t[p[e]]++;            e++;        }        if(cnt < n) break;        ans = min(ans, e - s);        if(t[p[s]] == 1)  cnt--;        t[p[s]]--;        s++;    }    printf("%d\n", ans);    return 0;} 
1 0
原创粉丝点击