斜率优化
FSYo
我不去想是否能够成功,
既然选择了远方,
便只顾风雨兼程
展开
-
斜率优化[转载]
“DP的斜率优化——对不必要的状态量进行抛弃,对不优的状态量进行搁置,使得在常数时间内找到最优解成为可能。斜率优化依靠的是数形结合的思想,通过将每个阶段和状态的答案反映在坐标系上寻找解答的单调性,来在一个单调的答案(下标)队列中O(1)得到最优解。”在呈交给教练的总结里,我这样写到。确实,集训了几天,对斜率优化感受颇多,就此写一下自己的理解。斜率优化的思想在2004年国家集训队员周源大神撰...转载 2018-09-17 22:02:13 · 197 阅读 · 0 评论 -
[模板]斜率优化DP
题目大意: 给出N个单词,每个单词有个非负权值Ci,现要将它们分成连续的若干段,每段的代价为此段单词的权值和,还要加一个常数M,即(∑Ci)^2+M。现在想求出一种最优方案,使得总费用之和最小。容易写出方程: f[i]=min{f[j]+(s[i]-s[j])^2+M}(0<=j<=i-1) f[i]=min{f[j]+(s[i]-s[j])^2+M} 展开得 f[i]...原创 2018-09-17 22:00:14 · 235 阅读 · 0 评论 -
[理解]斜率优化DP
单调队列优化DP对于f[i] = min{ f[j] } + a[i] 型使用整理归纳单调队列的定义:1、维护区间最值;2、去除冗杂状态;3、保持队列单调(最大值是单调递减序列,最小值是单调递增序列);4、最优选择在队首。 整理归纳单调队列的使用方法:1、维护队首;2、在队尾插入(每插入一个就要从队尾开始往前去除冗杂状态) ;3、取出需要的最优解(队列头的值即是...原创 2018-09-17 20:54:23 · 169 阅读 · 0 评论 -
玩具装箱TOY[斜率优化]
传送门第一次自己推斜率优化,好高兴对于区间的长度,s[i]表示前缀和在加上i也就是首先,考虑暴力的DP 拆开整理成如下形式 也就是最小值维护下凸包#include<bits/stdc++.h>#define y(A) (f[A]+s[A]*s[A]+s[A])#define k(A) (2*s[A]-2*L)#define...原创 2018-11-15 20:19:22 · 220 阅读 · 0 评论 -
特别行动队[斜率优化]
传送门首先考虑暴力的DPsum(i--j) 可以用前缀和维护把式子拆开 ...是一坨常数,这里省略了我们令 y=f[j]+a*s[j]*s[j]-b*s[j] , x=s[j] , k=2*a*s[i] , b=f[i]把点绘制出来差不多是这样[注意斜率是负的]数形结合来看,代码还是比较好写 #include<bits/stdc+...原创 2018-11-14 22:43:57 · 205 阅读 · 0 评论 -
序列分割[斜率优化]
传送门可以证明选的顺序对答案没有影响于是有转移方程变形得到 我们令另外 , 写之前最好画图考虑细节最大值维护上凸包,斜率是负数 , 所以图大概是这样然后树形结合来写#include<bits/stdc++.h>#define N 100050#define M 205#define y(k,x) (f[x][k-1]-s[x]*s[x])...原创 2018-12-09 11:42:54 · 217 阅读 · 0 评论 -
P2900 [USACO08MAR]土地征用 [斜率优化]
传送门我们按x排序 , 如果被包涵就直接剔除这个点显然取一段连续的是最优的 , 因此定义f[i] 表示1--i 的最小价值斜率优化搞一波 , 树形结合来写#include<bits/stdc++.h>#define N 50050#define LL long longusing namespace std;LL f[N],n,tot,Max,q[N]...原创 2018-12-17 21:16:05 · 166 阅读 · 0 评论