题意 给你n个数(n dp[i][j] 2. 和前面的分组 dp[lt[i] 1][j 1] dp[i][j] 怎么确定i前面的哪个点是最大的? 选择能和i分到一组的最前面的数 因为选择最前面的数可以降低前一组的上限 用双指针or单调队列处理 双指针板子 c++ for(l=r=n;l =1;){ ...
分类:
其他好文 时间:
2019-03-09 20:17:17
阅读次数:
168
一道例题,给定一串数字,求每连续k个数字的最大、最小值。 思路:初始化一个初始长度为k的单调队列,按从左到右加入元素,同时满足这个队列中的元素是递减的(也就是假如某个数被两个距离不超过k的大于他的数夹着,他会被从队尾调出队列)。得到最大值。 向右移动一格,假如队首离开范围,出队。往队尾加入元素前,把 ...
分类:
其他好文 时间:
2019-03-09 01:09:38
阅读次数:
163
对于单调性优化其实更多的是观察dp的状态转移式子的单调性 进而用优先队列 单调队列 二分查找什么的找到最优决策 使时间更优。 对于这道题就是单调性优化的很好的例子 首先打一个暴力再说。 f[i][j]表示前i个木匠刷前j个木板所得到的最大价值 f[i][j]=max(f[i][j],f[i-1][j ...
分类:
其他好文 时间:
2019-03-07 17:42:41
阅读次数:
148
模板题 以后再写= = 还需要二分优化(减少常数?) ...
分类:
其他好文 时间:
2019-03-06 00:47:09
阅读次数:
192
题目大意:给定一个长度为 N 的序列,将序列划分成若干段,保证每段之和不超过 M,问所有段的最大值之和最小是多少。 题解:设 $f[i]$ 表示前 i 个数满足上述条件的最优解,显然有状态转移方程$$f[i]=min\{f[j]+max_{j+1\le k \le i}\{a[k]\}\}$$,发现 ...
分类:
其他好文 时间:
2019-03-05 09:52:45
阅读次数:
147
https://www.cnblogs.com/DaD3zZ-Beyonder/archive/2015/10.html 加油啊布丁酱! 跳过了一个LIS的随笔。(LIS类似升序的单调队列) 2704:寻找平面上的极大点 先按x的大于序排序,再按y的大于序排序。从第一个点开始找,记录当前最大的y,每 ...
分类:
其他好文 时间:
2019-03-04 22:35:22
阅读次数:
189
题面: Alexandra has a paper strip with n numbers on it. Let's call them ai from left to right. Now Alexandra wants to split it into some pieces (possibl ...
分类:
其他好文 时间:
2019-02-26 19:12:03
阅读次数:
267
RT。由于本人dp很弱(或者说什么都弱),于是决定分模块刷题。单调队列就找了些题目(我水平已经沦落到了普及组qwq)练,顺便把以前做过的题都堆起来。以后做到的题再开新文章。 1.多重背包 不说了,很好推。放许久之前的幼稚代码 1 #include<bits/stdc++.h> 2 using nam ...
分类:
其他好文 时间:
2019-02-22 21:36:42
阅读次数:
196
嗯... deque 即为双端队列,是c++语言中STL库中提供的一个东西,其功能比队列更强大,可以从队列的头与尾进行操作... 但是它的操作与队列十分相似,详见代码1: 1 #include <cstdio> 2 #include <iostream> 3 #include <deque> 4 / ...
分类:
其他好文 时间:
2019-02-22 16:42:49
阅读次数:
176
https://www.luogu.org/problemnew/show/P2698 警示 用数组写双端队列的话,记得le = 1, ri = 0;le<=ri表示队列非空 题意 求一个最小的区间长度,使得区间中的最大值和最小值的差>=D. 思路 一开始二分加线段树强行做,多了一个log。用ST表 ...
分类:
其他好文 时间:
2019-02-17 00:53:13
阅读次数:
190