斜率优化
FSYo
我不去想是否能够成功,
既然选择了远方,
便只顾风雨兼程
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
斜率优化[转载]
“DP的斜率优化——对不必要的状态量进行抛弃,对不优的状态量进行搁置,使得在常数时间内找到最优解成为可能。斜率优化依靠的是数形结合的思想,通过将每个阶段和状态的答案反映在坐标系上寻找解答的单调性,来在一个单调的答案(下标)队列中O(1)得到最优解。” 在呈交给教练的总结里,我这样写到。确实,集训了几天,对斜率优化感受颇多,就此写一下自己的理解。 斜率优化的思想在2004年国家集训队员周源大神撰...转载 2018-09-17 22:02:13 · 249 阅读 · 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 · 365 阅读 · 0 评论 -
[理解]斜率优化DP
单调队列优化DP 对于f[i] = min{ f[j] } + a[i] 型使用 整理归纳单调队列的定义: 1、维护区间最值; 2、去除冗杂状态; 3、保持队列单调(最大值是单调递减序列,最小值是单调递增序列); 4、最优选择在队首。 整理归纳单调队列的使用方法: 1、维护队首; 2、在队尾插入(每插入一个就要从队尾开始往前去除冗杂状态) ; 3、取出需要的最优解(队列头的值即是...原创 2018-09-17 20:54:23 · 211 阅读 · 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 · 293 阅读 · 0 评论 -
特别行动队[斜率优化]
传送门 首先考虑暴力的DP sum(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 · 262 阅读 · 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 · 278 阅读 · 0 评论 -
P2900 [USACO08MAR]土地征用 [斜率优化]
传送门 我们按x排序 , 如果被包涵就直接剔除这个点 显然取一段连续的是最优的 , 因此定义f[i] 表示1--i 的最小价值 斜率优化搞一波 , 树形结合来写 #include<bits/stdc++.h> #define N 50050 #define LL long long using namespace std; LL f[N],n,tot,Max,q[N]...原创 2018-12-17 21:16:05 · 213 阅读 · 0 评论
分享