POJ 3320 Jessica's Reading Problem

来源:互联网 发布:java telnet vt 编辑:程序博客网 时间:2024/06/10 18:55

白皮书尺取法例题,基本和之前一道题目思路相同。刚开始为了图省事,为中间枚举的数组也开了一个set,但是后来发现会wa,换成hash(map)之后就很好过了。

#include <iostream>#include <cstdio>#include <set>#include <map>#include <algorithm>using namespace std;int a[1000010], p;int main(){scanf("%d", &p);set<int> total, cur;map<int, int> cnt;for (int i = 0; i < p; i++){scanf("%d", &a[i]);total.insert(a[i]);}int size = total.size();int s = 0, t = 0, res = p, sum = 0;for(;;){while (t < p && sum < size){if (cnt[a[t++]]++ == 0)sum++;}if (sum < size)break;res = min(res, t - s);if (--cnt[a[s++]] == 0){sum--;}}printf("%d\n", res);}


0 0
原创粉丝点击