
单调队列
逐梦起航-带梦飞翔
为了更加长远的快乐!
展开
-
单调队列—使用介绍与原理
单调队列顾名思义就是一个有规律的队列,这个队列的规律是:所有在队列里的数都必须按递增(或递减)的顺序列队,如果真有这么一个队列,那么队列的头是不是就是最小(或最大)的呢?例题:(来源:caioj 1172)给定一个n个数的数列,从左至右输出每个长度为m的数列段内的最大数。解法1:如果按照常规方法,我们在求f[i]即i~i+m-1区间内的最值时,要把区间内的所有数都访问一遍,时间复杂度约为O(nm)...原创 2017-08-11 09:41:35 · 7680 阅读 · 5 评论 -
poj2823 Sliding Window(单调队列)
题意给出一个长度为n的数列a[i],对于其中长度为k的子数列,输出其最小值和最大值。 题解单调队列队列存值和位置位置离i超过k的,出队对于最大值,用降序维护,每次放入一个值时一定要让数列顶的数大于它最小值反之 代码#include<cstdio>#include<cstring>#include<algorithm>u...原创 2018-08-10 20:41:11 · 163 阅读 · 0 评论 -
洛谷CF311B Cats Transport(DP)(斜率优化)
题目洛谷CF311B Cats Transport题解斜率优化设的距离为,即。先转换一下模型。对于第i只猫,饲养员要在t[i]-D[i]之后出发,才能把它带回家。故我们设数组,问题就转换成了在A数组中分成p组,每组(l,r)的代价是。为了方便操作,对A进行递增排序。同时,记录其前缀和S。在此基础上,设f[i][j]表示出动j个饲养员带走前i只猫的最小等待时间。转移方程:...原创 2018-09-25 10:48:00 · 403 阅读 · 0 评论 -
CH5A01&BZoj2726 任务安排(DP)(斜率优化)
例题CH5A01 任务安排1题解1DP设f[i][j]表示把前i个机器分成j批修理的最小费用,St,Sc分别对应数组t和c的前缀和。容易写出一个O(n^3)的DP方程:但是这个方法显然不够优秀。我们可以考虑去掉分成j批这一维,并用“费用提前计算”的思想来维护新的f。方程如下: 题解2DP+斜率优化我们把i看做定量,j看做变量,然后把所有仅与j有关的(决...原创 2018-09-25 12:00:54 · 345 阅读 · 0 评论 -
洛谷3594 [POI2015]WIL-Wilcze doły(单调队列)
题目给定一个长度为n的序列,你有一次机会选中一段连续的长度不超过d的区间,将里面所有数字全部修改为0。请找到最长的一段连续区间,使得该区间内所有数字之和不超过p。特性选择一个区间[i,i+d-1],那么我们选择的最长区间一定在这个区间附近,也就是连续的。题解单调队列很明显是一个O(N)的算法,那么时间只够我们枚举一个右端点。枚举右端点后,最优的左端点在哪里呢?很明显,这个左...原创 2018-10-17 13:39:44 · 289 阅读 · 0 评论