![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
单调队列
pubgoso
这个作者很懒,什么都没留下…
展开
-
单调队列优化dp学习笔记
这类问题一般是朴素的复杂度大的转移很好写。然后转移类似rmq的问题。需要注意的是:在新值与队头元素判断谁更优的时候,需要把两者放在一个参考系下进行比较。就是 把旧值等效放在新值的位置上的值才是旧值的真实值。cf372C题意:给你m个烟花,每个烟花在t_i时刻在x位置被点燃,得到b_i+|a_i-x|的分,初始选择任意位置,每分钟移动一个单位。问最大得分是多少。根据题目可以写出一个暴力的dpfor(int i=2;i<=m;i++){ for(int j=1;j<=n;j++){原创 2020-07-24 21:40:57 · 229 阅读 · 0 评论 -
poj1821
题目链接大意:给你n个木块,k个人。每个人有三个参数l,p,sl,p,sl,p,s,分别表示每个人最多加工的木块数,每个人加工一个木块的贡献,每个人加工木块区间必须包含的 木块编号思路:先看题,考虑dp[i][j]dp[i][j]dp[i][j]表示第i个人加工到j号木块的最大贡献,T[i]T[i]T[i]表示加工i个木块的最大贡献然后我们每次遍历i转移就是dp[i][j]=max(T[x...原创 2019-08-18 21:14:09 · 324 阅读 · 0 评论 -
2019牛客暑期多校训练营(第三场)F Planting Trees(单调队列)
题目链接大意:给你一个n*n的矩阵,让你求出面积最大的矩形,使得矩形内极差小于等于k思路:我们枚举矩形上下界,然后遍历右边界,维护每列的最大最小值,同时维护两个个下标递增,值分别递增和递减的单调队列,每次弹出不合法的队头元素,然后更新答案即可。细节见代码:#include<bits/stdc++.h> #define fi first#define se second#...原创 2019-08-27 21:49:45 · 160 阅读 · 0 评论 -
Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2) E.Let them slide(单调队列)
题目链接大意:给你一个n*m的空间,每行都有一些元素,你可以整体滑动这些元素,让你求出每列和的最大值思路:如果行的元素不能充满m列的话,我们在前后补上0,防止负数。然后扫一遍记录每个元素可能出现的列号,然后维护一个单调不增的单调队列,每次弹出元素就在差分数组中更新答案,然后把这个值存到队列中,要注意的是我们每次弹出的元素,要更新答案的时候,他作为最大值代表的区间是可以计算的,如果这个区间不合法...原创 2019-09-02 14:54:10 · 177 阅读 · 0 评论