【POJ 3320】【尺取法】Jessica's Reading Problem【暑期 No.2】
题意:
为了准备考试,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】相关推荐
- POJ 3320 尺取法,Hash,map标记
1.POJ 3320 2.链接:http://poj.org/problem?id=3320 3.总结:尺取法,Hash,map标记 看书复习,p页书,一页有一个知识点,连续看求最少多少页看完所有知识 ...
- 尺取法 POJ 3320 Jessica's Reading Problem
题目传送门 1 /* 2 尺取法:先求出不同知识点的总个数tot,然后以获得知识点的个数作为界限, 更新最小值 3 */ 4 #include <cstdio> 5 #include &l ...
- Jessica‘s Reading Problem(尺取法)
Jessica's Reading Problem (尺取法) Jessica's a very lovely girl wooed by lots of boys. Recently she has ...
- POJ3320 Jessica's Reading Problem 尺取法
Jessica's Reading Problem. Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22716 Accepted ...
- 【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 ...
- Jessica's Reading Problem
第一部分:题目 Description Jessica's a very lovely girl wooed by lots of boys. Recently she has a problem. ...
- POJ 3320 Jessica's Reading Problem (尺取)
Description 给出一段长度为\(n\)的整数序列,求包含所有出现过的数的连续区间的最小长度. Input 第一行给出序列长度\(n\),第二行给出\(n\)个整数,表示这个序列.\(n \l ...
- 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 ...
- ACM常用技巧之尺取法--POJ3061/3320/2739/2100
尺取法:反复推进区间的开头和结尾,来求取满足条件的最小区间的方法 . <挑战程序设计>P146 POJ3061 Subsequence Time Limit: 1000MS M ...
- 【常用技巧精选】尺取法
整理的算法模板合集: ACM模板 目录 1.反向扫描 1 找指定和的整数对 A.UVA1121 Subsequence B.POJ 3320 Jessica's Reading Problem C.l ...
最新文章
- Networking 基本术语/概念
- 第四十五课:MVC,MVP,MVVM的区别
- loj 1251(2-sat + 输出一组可行解)
- python总结函数图像_PIL使用小结(crop和paste函数)
- go json数据出现unicode_Golang处理JSON(一) 序列化
- 任正非谈鸿蒙系统问题不大,任正非谈鸿蒙系统:两三年重建生态,有信心打造全球生态...
- 关于曼哈顿距离和切比雪夫距离的转换和应用
- PyTorch学习笔记(五):模型定义、修改、保存
- GStreamer1.0中no element “ffmpegcolorspace”报错解决(八)
- 使用ExtendSim进行物流、供应链和运输建模仿真
- 使用SSH从服务器下载文件
- RapidMiner Studio入门
- 迪文串口屏TTL与主控板RS232电平信号转换方案
- 东风谷早苗机器人玩法_神秘谷介绍机器人
- go语言教程哪里有?go 语言优秀开源项目汇总
- MySQL DUAL表的作用
- 大局观有多重要?如何拥有大局观?
- 揭开WebDriver面纱
- BUUCTF reverse1-10 WP
- 金额保留小数点后两位方法
热门文章
- 正则表达式--简单记忆一
- 招聘senior.net software engineer
- 关于VMware的Server版卸载须知
- 前台js限制上传图片质量大小和尺寸
- crc java_求这个CRC16算法的java版实现!!!
- azure mysql无法连接_java - 无法从Azure的JAVA功能连接到Azure的MySQL数据库 - SO中文参考 - www.soinside.com...
- 安卓项目连接后台服务器,android云后端服务器
- 数据库习题(填空题三)
- A[1062]德才论 好题
- fill函数 神奇的迭代器