斜率优化
文章平均质量分 64
SC.ldxcaicai
我很菜=_=
展开
-
2018.08.28 洛谷P4360 [CEOI2004]锯木厂选址(斜率优化dp)
传送门 一道斜率优化dp入门题。是这样的没错。。。我们用dis[i]表示i到第三个锯木厂的距离,sum[i]表示前i棵树的总重量,w[i]为第i棵树的重量,于是发现如果令第一个锯木厂地址为i,第二个地址为j,则有total=[∑ni=1dis[i]∗w[i]]−dis[i]∗w[i]−dis[j]∗(sum[j]−sum[i])total=[∑i=1ndis[i]∗w[i]]−dis[i...原创 2018-08-28 14:10:20 · 224 阅读 · 0 评论 -
2018.09.29 bzoj3156: 防御准备(斜率优化dp)
传送门斜率dp经典题目。然而算斜率的时候并没有注意到下标的平方会爆int于是咕咕*2。这道题我用了两个数组来表示状态。f[i]f[i]f[i]表示最后i个位置倒数第i个放木偶的最优值。g[i]g[i]g[i]表示最后i个位置倒数第i个放塔的最优值。a[i]a[i]a[i]是倒数第i个放塔的花费于是有:g[i]=ming[i]=ming[i]=min{f[i−1],g[i−1]f[...原创 2018-09-29 09:56:54 · 156 阅读 · 0 评论 -
2018.09.29 bzoj3675: [Apio2014]序列分割(斜率优化dp)
传送门斜率优化dp经典题目。首先需要证明只要选择的K个断点是相同的,那么得到的答案也是相同的。根据分治的思想,我们只需要证明有两个断点时成立,就能推出K个断点时成立。我们设两个断点分成的三段连续序列的和为a,b,ca,b,ca,b,c如果先分左边有:total=a∗(b+c)+b∗c=a∗b+b∗c+c∗atotal=a*(b+c)+b*c=a*b+b*c+c*atotal=a∗(b+c...原创 2018-09-29 08:41:37 · 158 阅读 · 0 评论 -
2018.09.10 bzoj1597: [Usaco2008 Mar]土地购买(斜率优化dp)
传送门 终究还是通宵了啊。。。 这是一道简单的斜率优化dp。 先对所有土地排序,显然如果有严格小于的两块土地不用考虑小的一块。 于是剩下的土地有一条边单增,另外一条单减。 我们假设a[i]是单减的,b[i]是单增的。 f[i]=min(f[j]+a[j+1]∗b[i])f[i]=min(f[j]+a[j+1]∗b[i])f[i]=min(f[j]+a[j+1]*b[i]) 对于两个决...原创 2018-09-10 00:32:41 · 157 阅读 · 0 评论 -
2018.09.05 bzoj1010: [HNOI2008]玩具装箱toy(斜率优化dp)
传送门 一道经典的斜率优化dp。 推式子ing。。。 令f[i]表示装前i个玩具的最优代价。 然后用老套路。 我们只考虑把第j+1j+1j+1~iii个玩具分成一组的情况,之前的1~j个自行按最优情况分组。 显然有f[i]=f[j]+(sum[i]−sum[j]+L)2f[i]=f[j]+(sum[i]−sum[j]+L)2f[i]=f[j]+(sum[i]-sum[j]+L)^2 ...原创 2018-09-05 23:56:20 · 119 阅读 · 0 评论 -
2018.09.05 bzoj2726: [SDOI2012]任务安排(斜率优化dp+二分)
传送门 跟TiTiT_i为正数的时候差不多。 只是这个时候timetimetime数组没有了单调性,因此不能丢弃队头的元素,我们需要维护完整的下凸壳然后在上面二分。 写的时候如果用slopeslopeslope函数算斜率好像会爆掉几个点,精度真神奇。。。 代码:#include<bits/stdc++.h>#define ll long long#define N ...原创 2018-09-05 23:27:43 · 192 阅读 · 0 评论 -
2018.09.08 bzoj4518: [Sdoi2016]征途(斜率优化dp)
传送门 把式子展开后发现就是要求: m∗(∑mi=1sum′[i])−sum[n]2m∗(∑i=1msum′[i])−sum[n]2m*(\sum _{i=1} ^m sum'[i])-sum[n]^2的最小值。 于是只需要求: m∗(∑mi=1sum′[i])m∗(∑i=1msum′[i])m*(\sum _{i=1} ^m sum'[i])的最小值。 于是设f[i][j]f[i]...原创 2018-09-08 17:20:59 · 151 阅读 · 0 评论 -
2018.09.05 任务安排(斜率优化dp)
描述这道题目说的是,给出了n项必须按照顺序完成的任务,每项任务有它需要占用机器的时间和价值。现在我们有一台机器可以使用,它每次可以完成一批任务,完成这批任务所需的时间为一个启动机器的时间S加上所有任务需要的时间。并且它是在完成所有任务后才会把任务的成果输出,这样我们就在那一时间时得到所有这些任务的一个完成时间。我们现在要求一种完成任务的方式使得所有任务的完成时间乘上该任务的价值之和最小。...原创 2018-09-05 12:02:51 · 422 阅读 · 3 评论 -
2018.09.07 bzoj1096: [ZJOI2007]仓库建设(斜率优化dp)
传送门 斜率优化dp经典题。 令f[i]表示i这个地方修建仓库的最优值,那么答案就是f[n]。 用dis[i]表示i到1的距离,sump[i]表示1~i所有工厂的p之和,sum[i]表示1~i所有工厂的p*dis之和。 那么有状态转移方程: f[i]=min(f[j]+dis[i]∗(sump[i−1]−sump[j])−(sum[i]−sum[j])+c[i])f[i]=min(f[j...原创 2018-09-07 21:44:41 · 193 阅读 · 0 评论 -
2018.09.07 bzoj1911: [Apio2010]特别行动队(斜率优化dp)
传送门 斜率优化dp经典题。 题目中说的很清楚,设f[i]表示前i个数分配出的最大值。 那么有: f[i]=max(f[j]+A∗(sum[i]−sum[j])2+B∗(sum[i]−sum[j])+C)f[i]=max(f[j]+A∗(sum[i]−sum[j])2+B∗(sum[i]−sum[j])+C)f[i]=max(f[j]+A*(sum[i]-sum[j])^2+B*(sum[...原创 2018-09-07 21:02:34 · 153 阅读 · 0 评论 -
2018.09.07 codeforces311B. Cats Transport(斜率优化dp)
传送门 斜率优化dp好题。 对于第i只猫,显然如果管理员想从出发开始刚好接到它,需要在t[i]=h[i]−dist(1,i)t[i]=h[i]−dist(1,i)t[i]=h[i]-dist(1,i)的时候出发才行。 这样的话,如果把第l~r只猫分成一组,那么当前分组需要的最小花费是 t[r]−t[l]+t[r]−t[l+1]+t[r]−t[l+2]+...+t[r]−t[r]=t[r]∗...原创 2018-09-07 20:21:58 · 269 阅读 · 0 评论 -
2018.08.29 hdu3507 Print Article(斜率优化dp)
传送门 这应该算是斜率优化的模板题了。 就是要求打印n个数,每个数有一个参数a[i],每打印一段连续的数[l,r]需要的花费是(a[[l]+...+a[r])2+m(a[[l]+...+a[r])2+m(a[[l]+...+a[r])^2+m,要使得打印出所有数的代价最小。 用dp[i]表示打印1~i用的最小代价,显然有dp[i]=min(dp[j]+m+(sum[i]−sum[j−1])2...原创 2018-08-29 23:35:27 · 97 阅读 · 0 评论 -
2018.11.02 NOIP模拟 距离(斜率优化dp)
传送门分四个方向分别讨论。每次枚举当前行iii,然后对于第二维jjj用斜率优化dpdpdp。f[i][j]=(j−k)2+mindisk2f[i][j]=(j-k)^2+mindis_k^2f[i][j]=(j−k)2+mindisk2其中mindismindismindis表示离第iii行的最短距离。这个显然可以斜率优化代码...原创 2018-11-02 16:47:30 · 164 阅读 · 0 评论