
单调队列
bifanwen
梦想是遥不可及而奇幻莫测的,它给我全部的力量,它把我叫醒。
展开
-
再谈单调队列优化 & 背包九讲
博客园同步前置知识:浅谈单调队列简单背包问题这篇文章我们主要研究 单调队列优化 dp\text{dp}dp 如何用于背包问题。01\text{01}01 背包nnn 个物品,背包体积为 VVV,每个物品有 viv_ivi(价值)和 wiw_iwi(重量),每个物品只有 111 个。求在不超过背包体积的情况下能获得的最大价值。n,V,vi,wi≤1×103n,V,v_i,w_i \leq 1 \times 10^3n,V,vi,wi≤1×103,时间限制 1s1s1s,空间限制 1原创 2020-07-12 21:38:42 · 272 阅读 · 0 评论 -
浅谈单调队列
博客园同步前置知识:简单 dp\text{dp}dp,队列。首先我们看一道题目:原题链接简要题意:给定一个长为 nnn 的数组,要求 不能选连续超过 mmm 个数,问选出数的最大值。n≤105,ai≤109n \leq 10^5 , a_i \leq 10^9n≤105,ai≤109.注:本题将作为 作者讲解单调队列优化 dp\text{dp}dp 的引子题。O(nm)\mathcal{O}(nm)O(nm) 的 dp\text{dp}dp首先我们考虑用 fif_ifi 来表示 [1,原创 2020-07-12 17:19:03 · 871 阅读 · 1 评论 -
P1440 求m区间内的最小值 题解
博客园同步原题链接简要题意:给定 nnn 个数 {ai}\{a_i\}{ai} 和一个 mmm,输出所有 1≤i≤n1 \leq i \leq n1≤i≤n 的 minmax(1,i−m+1)iai\min_{\max(1, i-m+1)}^{i} a_iminmax(1,i−m+1)iai.n,m≤2×106n,m \leq 2 \times 10^6n,m≤2×106.显然这就是 对每个数求出其前 mmm 个数的最小值。朴素令 fi=minmax(1,i−m+1)iaif_i原创 2020-07-05 14:53:18 · 258 阅读 · 0 评论 -
P4779 【模板】单源最短路径(标准版) 题解
原题链接简要题意:给定一个有向图,求从源点开始到各点的最短路。前置知识:P3371 【模板】单源最短路径(弱化版)首先,我们考虑把原来 Dijkstra\text{Dijkstra}Dijkstra 的算法考虑优化。对于每个节点,松弛相邻节点,这部分无法优化。但是寻找 dis\text{dis}dis 最小值的过程,我们可以用 优先队列(即小根堆)实现。怎么实现呢?考虑一开始源点入队,队列记录每个点的 当前 dis\text{dis}dis 最小值 和编号。对当前节点,把所有相邻的节点松原创 2020-06-13 17:25:21 · 923 阅读 · 1 评论 -
P1886 滑动窗口 /【模板】单调队列 题解
原题链接简要题意:给定一个数组,求所有连续 mmm 个数的最大值和最小值。首先,对于这种题目,用 5+5+5+ 种方法(至少),这里介绍几种吧。算法一根据 RMQ\texttt{RMQ}RMQ 算法解决问题。用 fi,jf_{i,j}fi,j 表示从 iii 开始往后 2j2^j2j 个的最大值。(2j>n2^j > n2j>n 则视为 nnn)那么,显然有:f...原创 2020-04-07 12:16:17 · 413 阅读 · 2 评论