【洛谷P1638】逛画展】的更多相关文章

[洛谷P1638]逛画展 题目大意: 有\(n(n\le10^6)\)个格子,每个格子有一种颜色.颜色种数为\(m(m\le2000)\).求包含所有颜色的最小区间. 思路: 尺取法裸题. 思路: #include<cstdio> #include<cctype> #include<climits> inline int getint() { register char ch; while(!isdigit(ch=getchar())); register int x=…
P1638 逛画展 题目描述 博览馆正在展出由世上最佳的 M 位画家所画的图画. wangjy想到博览馆去看这几位大师的作品. 可是,那里的博览馆有一个很奇怪的规定,就是在购买门票时必须说明两个数字, a和b,代表他要看展览中的第 a 幅至第 b 幅画(包含 a 和 b)之间的所有图画,而门票 的价钱就是一张图画一元. 为了看到更多名师的画,wangjy希望入场后可以看到所有名师的图画(至少各一张). 可是他又想节省金钱... 作为wangjy的朋友,他请你写一个程序决定他购买门票时的 a 值和…
题目链接:https://www.luogu.com.cn/problem/P1638 题目大意: 给你一个长度为 \(n (\le 10^6)\) 的数组,数组中每个元素的范围在 \(1\) 至 \(m\) 之间(\(1 \le m \le 2000\)), 求一个最短的连续子序列包含 \(1\) 到 \(m\) 内的所有元素. 解题思路: 这道题目我的解法是开一个队列,队列里面的元素是连续的. 那么怎么保证这个队列是连续的呢? 我只需要从 1 到 n 将每个元素入队,然后在需要的时候讲队首元…
传送门啦 只需记录满足条件的一个区间的初始端点 $ (head, tail) $ ,不断删掉左端点 $ head $ ,不断更新右端点 $ tail $ : 开一个 $ vis[] $ 记录一下每幅画出现的次数, 删除左端点时,判断一下左端点对应的这幅画是否在 $ [ head+1, tail ] $ 区间里存在,即 $ vis[head]>0 $ ; 反之去更新,去寻找被删掉的点对应的下一幅画,更新 \(tail\) . #include <iostream> #include <…
尺取法的经典题目: 博览馆正在展出由世上最佳的 mm 位画家所画的图画. 游客在购买门票时必须说明两个数字,aa 和 bb,代表他要看展览中的第 aa 幅至第 bb 幅画(包含 a,ba,b)之间的所有图画,而门票的价钱就是一张图画一元. Sept 希望入场后可以看到所有名师的图画.当然,他想最小化购买门票的价格. 请求出他购买门票时应选择的 a,ba,b,数据保证一定有解. 若存在多组解,输出 aa 最小的那组. 首次了解到有尺取法这个东西,实际上就是双指针维护.用从cnt[i]维护区间每种画…
洛谷题目传送门 又是一年联赛季.NOIP2017至此收官了. 这个其实是比较套路的图论DP了,但是细节有点恶心. 先求出\(1\)到所有点的最短路\(d1\),和所有点到\(n\)的最短路\(dn\). 设\(f_{i,j}\)表示\(i\)号点,所有与\(d1\)差距不超过\(j\)的路径条数.转移的时候肯定是从小到大枚举\(j\),再枚举边转移.显然每条边都有一个\(\Delta\)值,为\(d1_x-d1_y+w\),含义就是强制经过这条边的最短路长度相较于原最短路长度的增量.于是有转移式…
题目大意:给定 N 个数字组成的序列,求刚好拥有所有 M 种数字的最短区间. 题解:双指针算法是一种对于暴力的优化算法,对于这道题来说,一个显然的暴力是:对于序列中每一个位置 pos,计算出这个位置右边恰好满足条件的位置 f[pos],时间复杂度为 \(O(n^2)\).考虑对于每一个位置的计算位置,计算位置的值单调不降,因此,这就没有必要重复计算一些位置,直接扫描一遍即可统计出答案.因此,采用双指针扫描即可. 双指针算法的步骤如下: 未满足条件,则右端点不断向右扩展. 若仍不满足条件,则退出循…
P3953 逛公园 问题描述 策策同学特别喜欢逛公园. 公园可以看成一张\(N\)个点\(M\)条边构成的有向图,且没有自环和重边.其中1号点是公园的入口,\(N\)号点是公园的出口,每条边有一个非负权值,代表策策经过这条边所要花的时间. 策策每天都会去逛公园,他总是从1号点进去,从\(N\)号点出来.策策喜欢新鲜的事物,他不希望有两天逛公园的路线完全一样,同时策策还是一个特别热爱学习的好孩子,他不希望每天在逛公园这件事上花费太多的时间.如果1号点到\(N\)号点的最短路长为\(d\),那么策策…
题目 作为\(NOIp2017D1T3\) 这个题还是很良心的,至少相对于\(NOIp2018\)来说,希望\(NOIp2019\)不会这么坑吧. 这个题可以作为记忆化搜索的进阶题了,做这个题的方法也是多种多样. \(30pts\) 30分可以直接套用最短路计数的模板直接套上就可以了. \(100pts\) 100其实有很多做法,我认为最好写的做法就是记忆化搜索了. 首先我们先要判断是否有无数条路径,那根据题意的话,只要原图中存在零环则就为无数条路径. 然后考虑记忆化搜索的步骤,我们用\(dp[…
这道题是直尺法的模板题: #include<iostream> using namespace std; ; ; int n, m, a[maxn], vis[M]; int main(){ cin >> n >> m; ; i < n; ++i)cin >> a[i]; , en = , num = , res = n, l = , r = n; ){ while (en < n&&num < m){ )num++; }…