单调队列优化
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
2018.09.10【BZOJ2442】修剪草坪(单调队列优化DP)
传送门 解析: 首先状态转移还是比较好想的。 令fi,0/1fi,0/1f_{i,0/1}表示考虑前iii个时,选择第iii个与不选第iii个能够获得的最大效益。 我们维护一个sumsumsum数组表示前缀和。 那么,状态转移方程也就呼之欲出了 fi,0=max(fi−1,0,fi−1,1)fi,0=max(fi−1,0,fi−1,1)f_{i,0}=max(f_{i-1,0}...原创 2018-09-10 20:37:02 · 295 阅读 · 0 评论 -
2018.09.10【洛谷1886】滑动窗口(单调队列优化DP)
传送门 解析: 显然又是DPDPDP。 考虑单调队列优化。 对于最大值,队列里面保存当前位置前kkk个中的递减序列,每次查队首,改队尾就行了。 最小值类似处理。 代码: #include<bits/stdc++.h> using namespace std; #define ll long long #define re register #define gc...原创 2018-09-10 21:05:44 · 246 阅读 · 0 评论 -
2018.09.10【NOI2005】瑰丽华尔兹(单调队列优化DP)
传送门 解析: 令fi,j,pfi,j,pf_{i,j,p}表示在第ppp个时间段后,停留在(i,j)(i,j)(i,j)时能够得到的最大滑行距离。 那么状态转移方程。我就不写了。。。代码里面很明白了。 而对于每一次更新,都是用的上一次的答案,所以按顺序更新可以直接省略第三维,节约空间。 而且每一次的更新也显然满足单调性。所以就直接上单调队列优化。 对于家具的位置,直接清空队列...原创 2018-09-10 22:48:19 · 170 阅读 · 0 评论 -
2018.11.09【CodeVS5429】多重背包(单调队列优化多重背包)
传送门 解析: 发现似乎没有想象的难,而且比二进制拆分好写的多啊 思路 考虑一般的不加任何优化的背包问题状态转移方程: f[k]=max(f[k],max{f[k−wi]+vi})f[k]=max(f[k],max\{f[k-w_i]+v_i\})f[k]=max(f[k],max{f[k−wi]+vi}) 在有多个相同物品的时候考虑如下转移f[k]=max{f[k−j×w]+v×w}f[k...原创 2018-11-09 14:42:08 · 261 阅读 · 0 评论