博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【尺取】POJ 3320
阅读量:6824 次
发布时间:2019-06-26

本文共 642 字,大约阅读时间需要 2 分钟。

题意:一本书P页,第i页有ai知识点,问你至少从某一处开始连续要翻多少页才能复习完所有的知识点,不能跨页翻。

思路:《挑战程序设计》上的尺取法的经典例题,set用来求出所有不重复知识点的个数,map用来计算是否有新出现的的知识点。

1.左端点s,右端点t,目前复习的知识点num初始化为0;
2.只要有t < P,num < n,且出现新的知识点counts[a[t++]]++==0,num++;
3.如果num < n,则无法解决该题。否则更新答案,min(res,t-s);
4.从s开始缩小范围,若某一知识点的次数为零,则num–;回归2.

#include 
#include
#include
#include
#include
#include
using namespace std;const int maxn = 1000000+10;int P;int a[maxn];int main(){ while(~scanf("%d",&P)){ set
all; for(int i=0;i
counts; int res = P; for(;;){ while(t

转载于:https://www.cnblogs.com/MIKORU/p/5796742.html

你可能感兴趣的文章
分形树的绘制
查看>>
loadrunner请求中有汉字 如何编码
查看>>
java数据结构 • 面向对象 • 异常 • 随机数·时间
查看>>
springmvc 实现pc端手机端适配(同一个请求根据不同客户端展示不同界面)
查看>>
BTree和B+Tree详解
查看>>
VS2005工程迁移到Eclipse CDT
查看>>
Linux高端内存映射(上)【转】
查看>>
usb_control_msg参数详解【转】
查看>>
8086汇编指令速查手册
查看>>
j2EE web.xml中的url-pattern的映射规则
查看>>
带输入输出参数的存储过程
查看>>
字符编码简介
查看>>
LevelDB源码之六缓存机制
查看>>
双向链表
查看>>
安装unity3d多个版本共存
查看>>
如何获取模拟器安装的app的位置
查看>>
[LeetCode] Largest Rectangle in Histogram 解题报告
查看>>
apache配置中ProxyPassReverse指令的含义
查看>>
算法整理-二叉树和堆栈
查看>>
如何设计一个“高大上”的 logo
查看>>