单调队列优化DP
文章平均质量分 60
Jozky86
这个作者很懒,什么都没留下…
展开
-
P3195 [HNOI2008]玩具装箱
P3195 [HNOI2008]玩具装箱题意:n件玩具,第i件玩具经过压缩后的一维长度为CiC_iCi,现在把玩具装入一维容器中,要求:在一个一维容器中的玩具编号是连续的如果一个一维容器中有多个玩具,那么两件玩具之间要加入一个单位长度的填充物。制作容器的费用与容器的长度有关。如果容器长度为x,其制作费用为(x−L)2(x-L)^2(x−L)2.问所有容器的总费用最小是多少题解:斜率优化dp入门题前置知识:需要会单调队列优化当dp方程为dp[i]=a[i]+b[i]时,这个方程是O原创 2021-10-21 20:13:24 · 353 阅读 · 2 评论 -
AcWing 1091. 理想的正方形
AcWing 1091. 理想的正方形题意:有一个 a×b 的整数组成的矩阵,现请你从中找出一个 n×n 的正方形区域,使得该区域所有数中的最大值和最小值的差最小。题解:前置知识:已经学会了一维的单调队列优化dp在本题中要求二维内的最大值和最小值,我们可以将二维拆开,先求每一行,长度为len的最小值b[],然后对于每一列,长度为len的最小值可以利用已知的b[]求得就比如说,第一行到第四行,每行区间长度为k的最小值已经求到,那么每列区间长度为k的最小值,就是这些每行的区间长度为k的最小值的最小值原创 2021-06-01 21:02:16 · 194 阅读 · 0 评论 -
1090. 绿色通道
1090. 绿色通道题意:n个题,每个题所花时间为ai,最多只用不超过t分钟做这个,肯定会有题目做不完,下标连续的一些空题称为一个空题段,问在t分钟内最长的空题段至少有多长?题解:最长的至少,可以考虑二分我们二分这个最长的空题段长度len,然后固定这个之后,问题就变成了每len+1个连续的题目至少要选一个题目(因为最长不选区间为len),诶这不就是烽火传递问题了。详细看代码代码:#include<bits/stdc++.h>#define debug(a,b) printf("%原创 2021-06-01 20:31:32 · 289 阅读 · 0 评论 -
Acwing 1089. 烽火传递
Acwing 1089. 烽火传递题意:有n个数,要保证每m个数中必须选一个,问所选数的最小总和是多少题解:我一开始设的状态为:dp[i]表示前i个数选完的最小值,第i个数可以选也可以不选,但是这样一个状态,如果要这么考虑的话应该开二维数组来表示状态,且答案不好求,所以我们改变状态定义:我们定dp[i]表示第i个必选的,且前i-1个满足条件的最小值我们可以得到状态方程为:dp[i]=min(dp[x])+a[i],x∈[i-m,i-1]dp[x]通过单调队列可以得到那最终的答案是什么?想想我原创 2021-05-28 11:41:53 · 185 阅读 · 0 评论 -
AcWing 1087. 修剪草坪28
AcWing 1087. 修剪草坪题意:有n个数,不能选超过连续的k个数,问所能选的最大值是多少?题解:我们首先分析dp过程:dp[i]表示选择完前i个数的最大值sum[i]表示前i项和对于第i个数,它有两个情况,选和不选1.不选,dp[i]=dp[i-1]2.选,那么以i为结尾的连续长度可以为1,也可以为2。。。,我们设所选的连续长度为j(1<=j<=k),那么这个区间就是[i-j+1,i],而第i-j个数就不选,再往前的区间答案就是dp[i-j-1]所以此时dp[i]=原创 2021-05-28 11:10:28 · 160 阅读 · 0 评论 -
Acwing -- 单调队列优化的DP问题
文章目录引入acwing154 滑动窗口应用135 最大子序和1088.旅行问题引入acwing154 滑动窗口题目链接题解应用闫氏最优化问题分析法135 最大子序和题目:输入一个长度为 n 的整数序列,从中找出一段长度不超过 m 的连续子序列,使得子序列中所有数的和最大。题解:我们把这个问题的集合分成n份,第k份表示以A[k]结尾的最大连续子序列是多少我们以A[k]结尾为例,我们从A[k]开始向前延申长度j,j的范围是[1,m],我们引入前缀和,S[k]表示前k个数的前缀和,那原创 2021-05-27 22:47:25 · 213 阅读 · 0 评论 -
Acwing 1088.旅行问题
Acwing 1088.旅行问题题目:一个环形公路,由n个车站,每个站有若干升汽油(有的站可能油量为零),每升油可以让汽车行驶一千米。从某个车站出发,一直按顺时针(或逆时针)方向走遍所有的车站,并回到起点。在一开始的时候,汽车内油量为零,John 每到一个车站就把该站所有的油都带上(起点站亦是如此),行驶过程中不能出现没有油的情况。任务:判断以每个车站为起点能否按条件成功周游一周。题解:破环成链,链复制我们从点i出发,能否到i+1,取决于i的油量是否大于等于d[i],即i到i+1的距离所有原创 2021-05-27 22:46:22 · 262 阅读 · 1 评论 -
Acwing 135 最大子序和
Acwing 135 最大子序和题目:输入一个长度为 n 的整数序列,从中找出一段长度不超过 m 的连续子序列,使得子序列中所有数的和最大。题解:我们把这个问题的集合分成n份,第k份表示以A[k]结尾的最大连续子序列是多少我们以A[k]结尾为例,我们从A[k]开始向前延申长度j,j的范围是[1,m],我们引入前缀和,S[k]表示前k个数的前缀和,那么图中长度为j,以A[k]结尾的连续子序列答案就是:S[k]-S[k-j],现在S[k]是固定的,我们要让值最大,就要使得S[k-j]最小,就相当于原创 2021-05-27 22:07:46 · 170 阅读 · 0 评论