基本上是一个斜率优化裸题了 cpp include using namespace std; typedef long long ll; const int maxn = 1e6+10; ll s[maxn],x[maxn],n,a,b,c,f[maxn],ss[maxn]; int q[maxn] ...
双倍经验(美滋滋~~): (1) (2) 回归正题: 本蒟蒻用的方法:动态规划$+$斜率优化$+$单调队列 其实这种斜率优化的题目大都差不多吧,这里主要讲本题的突破口: 对于每两块土地$x,y$来说,当$l[x]>l[y]$并且$h[x]>h[y]$时,我们可以得到第$y$块土地是没有价值的,因为如 ...
分类:
其他好文 时间:
2019-01-13 20:01:57
阅读次数:
152
[SDOI2016]征途 大体 大概就是推推公式,发现很傻逼的$n^3$DP get60 进一步我们发现状态不能入手,考虑优化转移 套个斜率优化板子 每一层转移来一次斜率优化 思路 先便便式子 $$s^2=m^{2} \frac{\sum_{1}^{m}(a_{i} \overline{a})^2} ...
分类:
其他好文 时间:
2019-01-04 22:36:50
阅读次数:
220
纪念自己推出了第一道斜率优化! 变量声明: $sum[i]$表示前$i$棵树的总重 $dis[i]$表示从开头到第$i$棵树的距离 $pay[i]$表示在第$i$处设立厂,花费是多少,只考虑$i$之前的 $f[i]$表示在第$i$处设立第二个厂的总最小花费 那么假设第一个厂建在$j$处,第二个厂建在 ...
分类:
其他好文 时间:
2019-01-04 12:33:28
阅读次数:
144
状压这个东西好像没有什么能优化的高级东西,像什么斜率优化,单调队列在状压的优化上都很少见 而最常见的状压优化就是预处理优化了, 这道题就预处理一下所有点对之间连线上的点,之后压成状态就能做到$O(2^n n^2)$ 这道题的状态就非常简单了,就是一个小学生状压$dp[i][S]$状态为$S$时最后一 ...
分类:
其他好文 时间:
2019-01-01 21:04:19
阅读次数:
180
这里是$sb$的$O(nm)$做法 上一篇题解里写的$O(nm)$做法并没有看懂,我真是好菜啊 这是一个用了斜率优化,但是复杂度仍然是$O(nm)$的做法 我们还是先写出简单的$dp$方程 $dp[i]$表示到达第$i$个点的时候的最大收益 于是就有 $$dp[i]=max(dp[j]+w[i] ( ...
分类:
Web程序 时间:
2019-01-01 21:01:52
阅读次数:
163
显然的斜率优化模型 但是单调队列维护斜率单调性的时候出现了莫名的锅orz 代码 cpp include include include include define int long long using namespace std; int a[500100],dp[500100],n,m,sum ...
分类:
其他好文 时间:
2018-12-30 20:27:08
阅读次数:
148
这个是题目描述: 题解: 啊啊啊啊啊…… 垃圾分数规划。 垃圾树链剖分。 垃圾斜率优化。 垃圾darkbzoj。 这里才是题解: 我们设那个分数的值=k,那么有 (yi-k*xi)+(qj-k*pj)=0; 我们要做的是让k最大。 那么很明显开两颗线段树,每个节点存一个凸包。 鉴于我们要让b值最大, ...
分类:
其他好文 时间:
2018-12-21 14:11:26
阅读次数:
231
"传送门" 这个题直接上斜率优化吧…… 因为对答案有贡献的是长或者宽最大的那个。所以我们首先按一维排序,这样我们就只需要考虑另一维了。 考虑用dp[i]表示购买前i块土地的最小费用,那么我们可以很容易的得到dp方程: $$dp[i] = min_{j=1}^{i 1}dp[j] + x[j+1] y ...
分类:
其他好文 时间:
2018-12-21 00:59:25
阅读次数:
188
这道题特别坑 状态转移是 f[i][k+1]=f[j][k]+(sum[i]-sum[j])*(sum[i]-sum[j]); 转换后变为 f[j][k]+sum[j]*sum[j]=f[i][k+1]+2*sum[i]*sum[j]; 但是我在这里要说的是一个初值的问题 通常情况下斜率优化的题目都 ...
分类:
其他好文 时间:
2018-12-18 02:35:55
阅读次数:
177