![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
单调队列
单调队列&单调队列优化DP
谁是凶手1703
这个作者很懒,什么都没留下…
展开
-
滑动窗口【单调队列】
给定一个大小为n≤106的数组。 有一个大小为k的滑动窗口,它从数组的最左边移动到最右边。 您只能在窗口中看到k个数字。 每次滑动窗口向右移动一个位置。 以下是一个例子: 该数组为[1 3 -1 -3 5 3 6 7],k为3。 窗口位置 最小值 最大值 [1 3 -1] -3 5 3 6 7 -1 3 1 [3 -1 -3] 5 3 6 7 -3 3 1 3 [-1 -3 5] 3 6 7 -3...原创 2019-08-08 11:29:02 · 195 阅读 · 0 评论 -
修剪草坪【单调队列DP】【f(i)前i个合法序列的最大值】
思路 思路1 长度为m+1的序列必须不选择1个的最大值 反过来想,长度为m+1的序列中至少选择一个,选出来最小值,然后总和处理 f[i] :前i个序列最后一个序列选的最小值 转移:在i前面的m+1个f[i] 中选择最小的 + a[i] 长度为m+1中f[i] 的最小值,单调队列优话 思路2 定义状态f[i] :前i个序列中合法的序列最大值 第i个数选、不选 不选:f[i-1] 选 选上这个点+之前的连续选点长度为1<=x<=m 转移:f[i-x-1] + a[.原创 2020-11-11 19:40:12 · 110 阅读 · 0 评论 -
旅行问题【单调队列优化DP】【顺时针变前缀和、逆时针变后缀和】【下标+1、-1】
旅行问题 环形:2倍空间处理 判断中间有没有油:油的前缀和 - 路程的前缀和 顺时针,前缀和。逆时针,后缀和 顺时针处理: 要从后往前枚举:维护的单调队列长度为:n+1 因为是前缀和,我们用i后面n个元素的最小值和i比较 比较成功之后,i+1为true 刚开始q[0] 放下标2*n+1 逆时针处理(同理,注意下标) #include<iostream> #include<algorithm> using namespace std; const int N=2e6+100;原创 2020-11-12 10:33:13 · 120 阅读 · 0 评论 -
绿色通道【二分】【单调队列优化DP】【序列中连续m不选】【序列中每m+1个选择一个】
绿色通道 题意 长度为n的序列,可以选择最长长度为len的空序列,保证剩下的序列能在T时间内完成。他最长的空题段len至少有多长就可以了 思路 首先,最长的空题段len:序列中len+1长度内选择1个,check出可以不可以。 然后,要求这个len最少,二分模板中右半部分为true,左半部分为false,进行二分。 考虑cheak函数 序列中len+1中选择1个 f[i] :序列中前i个序列,第i个位置选择的价值 转移,i前面len+1个位置中最小的f[i] + a[i] 用单调队列优化一下。 把最小值从原创 2020-11-12 11:24:52 · 113 阅读 · 0 评论