单调队列优化在写斜率优化之前,我们来回顾一下单调队列优化的dp
1. 对于如下形式的dp方程
dp[i]=min{dp[j]+f(j)}(0<j<i)dp[i] = min\{dp[j] + f(j)\} (0 < j < i)
我们直接用一个变量维护(0, i)中dp[j] + f(j)的最小值即可2.对于如下形式的dp方程
dp[i]=min{dp[j]+f(j)}(i?m<j<i)dp...
分类:
其他好文 时间:
2016-05-12 15:13:29
阅读次数:
260
单调队列优化DP的模板题 不难列出DP方程: 对于买入的情况 由于dp[i][j]=max{dp[i-w-1][k]+k*Ap[i]-j*Ap[i]} AP[i]*j是固定的,在队列中维护dp[i-w-1][k]+k*Ap[i]的单调性即可 ...
分类:
其他好文 时间:
2016-05-07 22:02:44
阅读次数:
215
【题目大意】 已知第i天的股票买入价为每股APi,第i天的股票卖出价为每股BPi(数据保证对于每个i,都有APi>=BPi),第i天的一次买入至多只能购买ASi股,一次卖出至多只能卖出BSi股。 股票交易所规定在两次交易(某一天的买入或者卖出均算是一次交易)之间,至少要间隔W天,也就是说如果在第i天 ...
分类:
其他好文 时间:
2016-04-30 23:36:25
阅读次数:
324
第一次斜率优化。 大致有两种思路: 1.f[i]表示第i个不选的最优情况(最小损失和)f[i]=f[j]+e[i] 显然n^2会T,但是可以发现f的移动情况可以用之前单调队列优化,就优化成O(n)的了。 2.f[i]表示第i个选,第j+1不选的最优情况(最大效率和)f[i]=f[j]+sum[i]- ...
分类:
其他好文 时间:
2016-04-23 09:01:58
阅读次数:
132
线性DP,使用单调队列优化。 1 /* 4374 */ 2 #include <iostream> 3 #include <sstream> 4 #include <string> 5 #include <map> 6 #include <queue> 7 #include <set> 8 #inc
分类:
其他好文 时间:
2016-02-20 00:26:36
阅读次数:
176
题目链接单调队列优化枚举起点找出每一种颜色在这个位置之后的第一个位置与这个位置距离的最大值。再找出每一个起点结果的最小值。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int inf=21474...
分类:
其他好文 时间:
2016-01-22 17:03:35
阅读次数:
116
1855: [Scoi2010]股票交易Time Limit:5 SecMemory Limit:64 MBSubmit:909Solved:420[Submit][Status][Discuss]Description最近lxhgww又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的...
分类:
其他好文 时间:
2015-12-26 11:25:25
阅读次数:
278
这道题题意不想说了,跑了640ms,感觉水过去了,应该能通过单调队列优化,很长时间没碰已经不知道怎么写了,就说说现在的写法吧。 状态定义很关键:dp[i][j]把前j个topic放在前i堂课. 因为这道题中的topic不能跳,必须按顺序,那么我们可以用贪心先求出最少的课程数,凭感觉证明这个贪心的做法...
分类:
其他好文 时间:
2015-11-01 17:49:53
阅读次数:
303
Alice's mooncake shopTime Limit: 20 SecMemory Limit: 256 MB题目连接http://acm.hdu.edu.cn/showproblem.php?pid=4122Description The Mid-Autumn Festival, also...
分类:
其他好文 时间:
2015-10-28 22:56:58
阅读次数:
334
题意: 必须严格按顺序执行M个步骤来生产一个产品,每一个步骤都可以在N台机器中的任何一台完成。机器i完成第j个步骤的时间为T[i][j]。把半成品从一台机器上搬到另一台机器上也需要一定的时间K。每台机器最多只能连续完成产品的L个步骤。也就是说,如果有一台机器连续完成了产品的L个步骤,下一个步骤就必....
分类:
其他好文 时间:
2015-10-09 12:05:44
阅读次数:
226