跟着书上的思路学习dp的单调性优化觉得还是很容易想的。 数据范围: dp,数据范围是百万,这应该是O(n)的算法了。 首先不难想到设f[i]表示到第i个百米所能达到的最大能量,那么f[n]即为所求。 f[i]=max(f[i],f[j]+s[i]-s[j]-cost[i]);这个地方s数组是能量的前            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2018-12-30 18:24:00
                            
                                106阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            简单单调队列.
滑动窗口题解.
    单调队列是一种基于deque,通过特定的维护方式使得结构内部具有单调性的算法.区别于单调栈,单调队列需要对队列的两端同时进行维护.我这样描述可能会使用单调队列算法的问题:该问题需要求出一个全局的/若干个局部的解,这个(些)解与一个区间/区间的两端相关.我发现有不少单调队列问题都有其它RMQ算法解法().这时候,单调队列是O            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-02 23:41:17
                            
                                63阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            做了几道前几天多校的单调队列优化DP题目:hdu 4326Dragon Ballhttp://acm.hdu.edu.cn/showproblem.php?pid=4362题意:Sean的到一个地图上边标有什么时刻什么地点会出现龙珠,龙珠在每一时刻出现在同一行里,Sean每一时刻只能去一个龙珠,给出他取龙珠所消耗的能量以及移动所消耗的能量。求他在每个时间段取龙珠的最小能量消耗;思路:dp[i][j]表示在i时间取第j个龙珠的最小能量消耗则有dp[i][j] = min(dp[i - 1][k],abs(p[i - 1][k].pos - p[i][j].pos)) + p[i][j].w;此方            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2012-08-27 08:54:00
                            
                                119阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            主要方法:先写出没有单调队列的普通DP,在加上单调队列,即可 代码比较明了就没加注释 )逃 P1886 滑动窗口 /【模板】单调队列 #include <bits/stdc++.h> using namespace std; const int N = 2000005; int n,l,r; int ...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-08-16 12:01:00
                            
                                60阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            传送门f[i][j] 表示第i个工匠做到j的最大价值 显然j应满足我们将f[i][j]变形 单调队列维护f[i-1][x]-x*p[i]每次先将f[i-1][...]合法的()中的放入单调队列 , 每次更新前除去不合法状态()#include<cstdio>#include<algorithm>#define K 150#defi...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-07-05 10:28:44
                            
                                92阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            好的今天又是摸鱼的一天,就看了一下单调队列的优化。 单调队列的使用满足几个条件:1.区间的最值询问 2.区间在滑动 单调队列的本质是:当一个选手比你小,且比你强,那你就没有机会了——Chen_zhe 我们要维护一个单调的队列,满足队列里面的两个值,即元素在原来排列中的位置,还有元素的值,都是单调递增 ...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-10-19 20:58:00
                            
                                171阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            传送门将上一轮合法的加进来 , 更新答案之前弹出和重新将后面和发的放进来就可以了 #include<bits/stdc++.%d%d%d",&n,&a...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-07-05 11:18:36
                            
                                45阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            题意: 一条线段上有n张骨牌(n=1e7), 相邻骨牌距离为1,每张骨牌有其高度和推倒的花费,问最少的花费推倒所有的骨牌。 题解: 首先用单调栈维护每个位置往左(右)推能推倒的最远的骨牌 dp[i]表示1-i倒下的最小花费 转移显然只有两种 一种是第i张往左推动 另一种是找到往右推动能推倒i的最小花            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2020-01-26 15:29:00
                            
                                95阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            对于单调性优化其实更多的是观察dp的状态转移式子的单调性 进而用优先队列 单调队列 二分查找什么的找到最优决策 使时间更优。 对于这道题就是单调性优化的很好的例子 首先打一个暴力再说。 f[i][j]表示前i个木匠刷前j个木板所得到的最大价值 f[i][j]=max(f[i][j],f[i-1][j            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2019-03-07 17:06:00
                            
                                132阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            Cut the SequenceTime Limit: 2000MSMemory Limit: 131072KTotal Submissions: 8764Accepted: 2576DescriptionGiven an integer sequence { an } of length N, y...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2016-01-19 10:20:00
                            
                                96阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            Fence \(F[i,j]=P_i* j+max_{j-L_i\leq k\leq S_i-1} \ \{F[i-1,k]+P_i* k\}\) #include <iostream> #include <cstdio> #include <cstring> #include <algorithm ...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-08-12 16:59:00
                            
                                116阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            传送门我们发现直接dp不好做 其实选的最大值就是总的值减去选的最小值我们选最小值要保证任意k个选一个,这就是比较显然的dp了单调队列            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-07-05 10:33:09
                            
                                32阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            题意:这题是要找最大的矩形面积。解题思路:这题的关键是要找每个条形能够往左和往右能够到达的最大长度。我最开始的思,这里我开始            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-05-29 22:17:01
                            
                                111阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            决策单调性 决策单调性,顾名思义就是决策点具有一定的单调性,使得我们在转移的过程中不需要遍历全部的情况,而只需要在一段满足单调性的区间内寻找我们想要的最优解 有的题目甚至不算是DP题,但是也有决策单调性的性质,也归到这一类 由于博主太菜,这里面很多结论不会给出详细的证明,可能只会给出感性理解的记忆方 ...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-04-23 21:33:00
                            
                                273阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
                         
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2019-09-29 14:39:00
                            
                                89阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            LINK定义f[i][j]f[i][j]f[i][j]表示前iii个数分割,最后一段是[j+1,i][j+1,i][j+1,i]合为一段有转移,在满足后一段大于前一段的前提时有f[i][j]=min{ f[j][k]+(i−j−1) }            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-10-08 14:27:34
                            
                                113阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            LINK定义f[i][j]f[i][j]f[i][j]表示前iii个数分割,最后一段是[j+1,i][j+1,i][j+1,i]合为一            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-02-05 16:01:11
                            
                                42阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            单调队列优化DP 一般的DP时间复杂度较高,我们需要一些手段优化来满足优秀的复杂度。我DP都不会是不是可以不学·            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-07-29 19:57:00
                            
                                98阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            注意:这题题意是有操作的天数相隔要大于w 然后列出状态转移方程就可以发现,可以用优点队列优化啦。 构造状态dp[i][j]表示第i 天拥有 j只股票的时候,赚了多少钱 状态转移有: 1、从前一天不买不卖: dp[i][j]=max(dp[i-1][j],dp[i][j]) 2、从前i-W-1天买进一            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2016-08-17 21:51:00
                            
                                83阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在长为L(的草地(可看成线段)上装
解题思路:这道题是单调队列优化dp,状态方程很容易想到,关键是优化问题,那么我们就需要维护一个队列放dp[j],使得队列中的元素j至少            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-05-29 18:36:08
                            
                                38阅读