随笔分类 -  动态规划 -- 斜率优化/凸优化

摘要:题目大意: 略 题面传送门 怎么看也是一道$duliu$题= = 先推式子,设$dp[x]$表示到达$x$点到达1节点的最小花费 设$y$是$x$的一个祖先,则$dp[x]=min(dp[y]+(dis[x]-dis[y])*p[x]+q[x])$,且$dis[x]-dis[y] \leq lim[ 阅读全文
posted @ 2018-12-28 19:47 guapisolo 阅读(330) 评论(0) 推荐(0)
摘要:洛谷传送门 题目大意:太长略 每新加入一个僵尸,容易得到方程$ans[i]=max{\frac{sum_{i}-sum_{j-1}}{s_{i}+d(i-j)}}$ 即从头开始每一段僵尸都需要在规定距离内被消灭 展开式子,可得$ans[i]=max{\frac{sum_{i}-sum_{j-1}}{ 阅读全文
posted @ 2018-12-02 14:44 guapisolo 阅读(165) 评论(0) 推荐(0)
摘要:洛谷传送门 题目大意:让你把序列切割k次,每次切割你能获得 这一整块两侧数字和的乘积 的分数,求最大的分数并输出切割方案 神题= = 搞了半天也没有想到切割顺序竟然和答案无关...我太弱了 证明很简单,就是乘法分配律,把式子展开就行了 定义$s_{i}$为序列$a$的前缀和,定义$f[k][i]$表 阅读全文
posted @ 2018-12-01 19:14 guapisolo 阅读(158) 评论(0) 推荐(0)
摘要:有一些题比较水没什么新意,就懒得写长题解了 忘了日期的 BZOJ 1096 [ZJOI2007]仓库建设 (斜率优化DP) 先展开式子,移项,发现$x$递增,斜率$k$也是递增,用队列维护个下凸包就行了 1 #include <cmath> 2 #include <queue> 3 #include 阅读全文
posted @ 2018-12-01 16:42 guapisolo 阅读(194) 评论(0) 推荐(0)
摘要:队列维护下凸包裸题 式子不太好推,但其实不用把式子全展开的..... k单调递增,x单调递增,队列维护一下就行了 因为f[i]期望最小值,所以维护下凸包 好像记录一下凸包的坐标能减少常数 阅读全文
posted @ 2018-09-24 22:34 guapisolo 阅读(147) 评论(0) 推荐(0)
摘要:我犯了sb错误然后调了1个小时......队列写错了 斜率k递增,b取最小值,队列维护凸包即可 f[0]的预处理好像有些奇怪???我把inf调大就过了??? 阅读全文
posted @ 2018-09-24 22:33 guapisolo 阅读(132) 评论(0) 推荐(0)
摘要:斜率优化DP裸题,DP方程很简单就不给了 优化一下,整理式子成y=kx+b的形式 发现x单调递增,斜率k单调递减,用一个队列维护凸包就行啦 f[i]和b成正比,而f[i]期望最大值,所以维护上凸包 阅读全文
posted @ 2018-09-24 22:32 guapisolo 阅读(143) 评论(0) 推荐(0)
摘要:题目大意:有n牧场排成一行,标号从1~n,每个牧场都可以放一个控制站,在第i个牧场放控制站需要花费a[i],控制站能够控制从它开始一直到它左边最靠近它的控制站之间的所有牧场,每个牧场放养量是b[i],这个牧场被它右侧离它最近控制站控制所需要支出的花费是它到牧场的距离d*b[j],在保证所有牧场都被控 阅读全文
posted @ 2018-09-24 22:31 guapisolo 阅读(153) 评论(0) 推荐(0)