![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
斜率优化&&四边形不等式
morejarphone
这个作者很懒,什么都没留下…
展开
-
NEU1579(斜率优化)
2015辽宁省赛的一道题,题意是给定n个人的坐标,要炸死他们,每一个炸弹可以投在任意位置炸死半径范围为R(R自己决定)的所有人,代价为a*r*r+b*r+c,问炸死所有人的最小代价。 显然DP[i] = min (DP[j-1]+a*R*R+b*R+c) 其中R = (r[i]-r[j])/2.0, 这里j #include #include #include #include #in原创 2015-10-13 12:28:15 · 308 阅读 · 0 评论 -
HDU3507(斜率优化)
#include #include #include #include #include using namespace std; #define maxn 511111 long long sum[maxn]; long long dp[maxn]; int n, m; long long a[maxn]; int que[maxn], head, tail; long long原创 2015-10-12 23:34:50 · 528 阅读 · 0 评论 -
HDU 3045 (斜率优化)
题目链接:点击这里题意:n个数,分成若干块,每一块的数量不能小于k,每一块的花费是所有的数减去块中最小值的和。每一块和的最小值。显然要排序以后分块,设fif_i表示(1,i)分块后的最小和,那么有fi=min{fj+sumi−sumj−aj+1∗(i−j)∥∥i−j≥k}f_i=min\left\{ f_j+sum_i-sum_j-a_{j+1}*(i-j)\big\|i-j\geq k \righ原创 2016-06-25 21:49:14 · 701 阅读 · 0 评论 -
HDU 2829 (斜率优化)
题目链接:点击这里题意:把一个序列分成m段, 使得每段的花费和最小. 某一段的花费等于这段里任意两个数字的乘积和.看着就很斜率优化的题目. 假设sis_i表示∑ij=1aj\sum _{j=1}^ia_j, cic_i表示i到j这一段的cost, 那么有cost(i,j)=cj−ci−∑p=1j∑q=j+1iap∗aq=ci−cj−sj×(si−sj)cost(i, j)=c_j-c_i-\sum原创 2016-06-23 15:45:25 · 339 阅读 · 0 评论 -
HDU 3480 (斜率优化)
题目链接:点击这里题意: 给出一个数字集合S, 要求m个子集, 使得子集并等于S, 并且每一个子集的花费和最小. 一个集合的花费等于最大元素减去最小元素的平方.显然贪心的想一下是最后肯定是数列排完序之后划分一下. 然后costi,j=(aj−ai)2cost_{i,j}=(a_j-a_i)^2, 转移方程就是fi=min{fj+(ai−aj+1)2∣∣j<i}f_i=min\left\{ f_j+(原创 2016-06-23 15:55:17 · 339 阅读 · 0 评论