这里专门放一些单调队列优化 DP 的题目,并加上简要解析。 Luogu P1725 琪露诺 易得转移方程为 $$f_i=\max_{j\,=\,\max(i-R,\;0)}^{i-L}f{_ j}+a_i\;(L \le i \le n)$$ 那么,其中 $\max$ 部分可以看成一段区间的最大值, ...
分类:
其他好文 时间:
2020-02-03 16:08:53
阅读次数:
76
单调栈、单调队列及优先队列 [TOC] 1.单调队列 单调队列的描述:指队列中元素之间关系具有单调性,而且队首和队尾都可以出队,但是只有队尾可以进行入队操作。 其重要作用是找到前n个后者后n个数的最值。 其具体操作是:假设单调队列是单调递减队列,假设在插入元素v时,将队列尾部的元素同v比较,如果队列 ...
分类:
其他好文 时间:
2020-02-02 23:24:07
阅读次数:
75
栈的应用 单调栈 队列的应用 单调队列 代码与知识点均学习自AcWing:https://www.acwing.com/activity/ ...
分类:
其他好文 时间:
2020-02-01 12:36:33
阅读次数:
60
这道题就是单调队列的裸题 今天刚学的单调队列 前几天刚学习完单调栈 感觉这两个东西非常相似哇 黄哥的一句话说破了他 他俩的区别就像队列和栈的区别233333 有关这道题倒没有太多说的 就是模拟队列 单调递增递减来找到区间最值 我这里用了数组模拟 问题就是G++ T了/// 而C++ AC 就很迷。。 ...
分类:
其他好文 时间:
2020-01-31 18:32:19
阅读次数:
79
题目:点此 思路:{ 先读入,再排序,然后循环{ 两个单调队列记端点,来一个数据,先维护,然后一边弹即将过时的数据,一边记录(万一这次是最优解,下次不是最优解(过时)),如果比最小值小就更新,最后进队。两单调队列同思路。 } 如果最小值没变就输出-1,否则输出最小值。 } 犯的错误:{ 1.有很多没 ...
分类:
其他好文 时间:
2020-01-30 21:11:55
阅读次数:
60
Description "题库连接" 给你 $n$ 棵树,第 $i$ 棵树的高度为 $d_i$。有一只鸟从 1 号树出发,每次飞跃不能超过 $k$ 的距离。若飞到下一棵树的高度大于等于这一棵树那么耗费一点体力,否则不会。问你飞到第 $n$ 棵树耗费最少体力为多少。多测,测试组数 $q$。 $1\le ...
分类:
其他好文 时间:
2020-01-28 17:40:19
阅读次数:
56
1.1 基本数据结构 1. 数组 2. 链表,双向链表 3. 队列,单调队列,双端队列 4. 栈,单调栈 1.2 中级数据结构 1. 堆 2. 并查集与带权并查集 3. hash 表 自然溢出 双hash 1.3 高级数据结构 1. 树状数组 2. 线段树,线段树合并 3. 平衡树 Treap 随机 ...
分类:
其他好文 时间:
2020-01-27 19:00:01
阅读次数:
97
单调栈,单调队列,优先队列 单调数据结构 常用于处理权值与序号单调的问题。 1.最近较小数 给定一个长度为n(n const int maxn = 5e6 + 10; int a[maxn], stack[maxn]; int n, top; int main() { //读入数据 scanf("% ...
分类:
其他好文 时间:
2020-01-27 12:32:37
阅读次数:
74
题意: 一条线段上有n张骨牌(n=1e7), 相邻骨牌距离为1,每张骨牌有其高度和推倒的花费,问最少的花费推倒所有的骨牌。 题解: 首先用单调栈维护每个位置往左(右)推能推倒的最远的骨牌 dp[i]表示1-i倒下的最小花费 转移显然只有两种 一种是第i张往左推动 另一种是找到往右推动能推倒i的最小花 ...
分类:
其他好文 时间:
2020-01-26 16:02:35
阅读次数:
75
优化形如$f_i=min/max(f_i,f_j+val_i)(l_i\leqslant j\leqslant r_i)$ 的$DP$方程 如 "瑰丽华尔兹" 中$DP$方程为$f_{i,j}=max(f_{i,j},f_{i dx_,j dy}+dis_{i,j,i dx_,j dy})$ $co ...
分类:
其他好文 时间:
2020-01-22 21:45:30
阅读次数:
45