题意:

为了准备考试,Jessica开始读一本很厚的课本。要想通过考试,必须把课本中所有的知识点都掌握。这本书总共有P页,第 i 页恰好有一个知识点ai(每个知识点都有一个整数编号)。全书中同一个知识点可能会被多次提到,所以她希望通过阅读其中连续的一些页把所有的知识点都覆盖到。给定每页写到的知识点,请求出要阅读的最少页数。

分析:

首先肯定需要求出总共有多少门不同的课,因此用set来进行去重.

然后再用 map[课程] 来记录在我选的这段区间中,选了多少次这门课程.

用sum来记录我当前已经选了多少门不同的课程了,然后进行尺取,每次都r++直到sum == 总课程数,达到之后,与ans比较最小值,然后再l++,并且判断sum是否需要 -1.

代码:

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <iostream>
#include <set>
#include <map>
#define rep(i,a,b) for(int i = a;i <= b;i++)
using namespace std;
const int SIZE = 1e6+10;int n;
int a[SIZE];
set<int>all;   //用来去重
map<int,int>cnt;  //用来标记这一页被复习了几次 int main()
{while(~scanf("%d",&n)){rep(i,1,n){scanf("%d",&a[i]);all.insert(a[i]);cnt[a[i]] = 0;}int l = 1,r = 0;int len = all.size();int sum = 0;int ans = 1e9;while(l <= n && r<=n){while(sum < len && r <= n){r++;if(cnt[a[r]] == 0)sum++;cnt[a[r]]++;}if(sum == len)ans = min(ans,r-l+1);elsebreak;cnt[a[l]]--; if(cnt[a[l]] == 0) sum--;l++;} printf("%d\n",ans);}return 0;
} 

【POJ 3320】【尺取法】Jessica's Reading Problem【暑期 No.2】相关推荐

  1. POJ 3320 尺取法,Hash,map标记

    1.POJ 3320 2.链接:http://poj.org/problem?id=3320 3.总结:尺取法,Hash,map标记 看书复习,p页书,一页有一个知识点,连续看求最少多少页看完所有知识 ...

  2. 尺取法 POJ 3320 Jessica's Reading Problem

    题目传送门 1 /* 2 尺取法:先求出不同知识点的总个数tot,然后以获得知识点的个数作为界限, 更新最小值 3 */ 4 #include <cstdio> 5 #include &l ...

  3. Jessica‘s Reading Problem(尺取法)

    Jessica's Reading Problem (尺取法) Jessica's a very lovely girl wooed by lots of boys. Recently she has ...

  4. POJ3320 Jessica's Reading Problem 尺取法

    Jessica's Reading Problem. Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22716 Accepted ...

  5. 【POJ - 3320 】Jessica's Reading Problem (尺取,哈希)

    题干: Jessica's a very lovely girl wooed by lots of boys. Recently she has a problem. The final exam i ...

  6. Jessica's Reading Problem

    第一部分:题目 Description Jessica's a very lovely girl wooed by lots of boys. Recently she has a problem. ...

  7. POJ 3320 Jessica's Reading Problem (尺取)

    Description 给出一段长度为\(n\)的整数序列,求包含所有出现过的数的连续区间的最小长度. Input 第一行给出序列长度\(n\),第二行给出\(n\)个整数,表示这个序列.\(n \l ...

  8. POJ 3320 Jessica's Reading Problem

    题目 Jessica's a very lovely girl wooed by lots of boys. Recently she has a problem. The final exam is ...

  9. ACM常用技巧之尺取法--POJ3061/3320/2739/2100

    尺取法:反复推进区间的开头和结尾,来求取满足条件的最小区间的方法  .    <挑战程序设计>P146 POJ3061 Subsequence Time Limit: 1000MS   M ...

  10. 【常用技巧精选】尺取法

    整理的算法模板合集: ACM模板 目录 1.反向扫描 1 找指定和的整数对 A.UVA1121 Subsequence B.POJ 3320 Jessica's Reading Problem C.l ...

最新文章

  1. Networking 基本术语/概念
  2. 第四十五课:MVC,MVP,MVVM的区别
  3. loj 1251(2-sat + 输出一组可行解)
  4. python总结函数图像_PIL使用小结(crop和paste函数)
  5. go json数据出现unicode_Golang处理JSON(一) 序列化
  6. 任正非谈鸿蒙系统问题不大,任正非谈鸿蒙系统:两三年重建生态,有信心打造全球生态...
  7. 关于曼哈顿距离和切比雪夫距离的转换和应用
  8. PyTorch学习笔记(五):模型定义、修改、保存
  9. GStreamer1.0中no element “ffmpegcolorspace”报错解决(八)
  10. 使用ExtendSim进行物流、供应链和运输建模仿真
  11. 使用SSH从服务器下载文件
  12. RapidMiner Studio入门
  13. 迪文串口屏TTL与主控板RS232电平信号转换方案
  14. 东风谷早苗机器人玩法_神秘谷介绍机器人
  15. go语言教程哪里有?go 语言优秀开源项目汇总
  16. MySQL DUAL表的作用
  17. 大局观有多重要?如何拥有大局观?
  18. 揭开WebDriver面纱
  19. BUUCTF reverse1-10 WP
  20. 金额保留小数点后两位方法

热门文章

  1. 正则表达式--简单记忆一
  2. 招聘senior.net software engineer
  3. 关于VMware的Server版卸载须知
  4. 前台js限制上传图片质量大小和尺寸
  5. crc java_求这个CRC16算法的java版实现!!!
  6. azure mysql无法连接_java - 无法从Azure的JAVA功能连接到Azure的MySQL数据库 - SO中文参考 - www.soinside.com...
  7. 安卓项目连接后台服务器,android云后端服务器
  8. 数据库习题(填空题三)
  9. A[1062]德才论 好题
  10. fill函数 神奇的迭代器