poj3320 Jessica's Reading Problem
2017-08-24 19:47
267 查看
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include <map> using namespace std; const int MAX_P = 1e6 + 10; int P; int a[MAX_P]; void solve() { // 计算全部知识点的总数 set<int>all; for (int i = 0; i < P; i++) all.insert(a[i]); int n = all.size(); // 利用尺取法来求解 int s = 0, t = 0, num = 0; map<int, int> count; // 知识点到出现次数的映射 int res = P; for ( ; ; ) { 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--; //去掉首页,对应的,首页上的知识点出现次数-1,如果原来就只出现一次,则出现的知识点种类数-1 } cout << res << endl; } int main() { scanf("%d", &P); for (int i = 0; i < P; i++) scanf("%d", a + i); solve(); return 0; }
相关文章推荐
- POJ3320 Jessica's Reading Problem(尺取法)
- POJ3320-Jessica's Reading Problem【尺取法】
- POJ3320 Jessica's Reading Problem(双指针)
- POJ3320_Jessica's Reading Problem_尺取法
- poj3320 Jessica's Reading Problem 尺取法
- POJ3320-Jessica's Reading Problem
- [尺取法] poj3320 Jessica's Reading Problem
- poj3320:Jessica's Reading Problem
- 【poj3320】Jessica's reading problem,解题报告+数据+代码
- 【poj3320】Jessica's Reading Problem(尺取)
- POJ3320-Jessica's Reading Problem
- POJ3320 Jessica's Reading Problem【尺取法】
- POJ3320-Jessica's Reading Problem
- POJ3320:Jessica's Reading Problem(尺取法)
- POJ3320---Jessica's Reading Problem(尺取法)
- Cpp环境【POJ3320】Jessica's Reading Problem 洁西卡的复习计划
- POJ3320-Jessica's Reading Problem
- poj3061 Subsequence&&poj3320 Jessica's Reading Problem(尺取法)
- POJ 题目3320 Jessica's Reading Problem(技巧)
- POJ 3320 Jessica's Reading Problem 尺取法