1.斜率优化dp中,若原数据太大,则不要将斜率交叉相乘(可能爆long long),而应使用long double比较slope 2.不带修改的前缀主席树:o=++gt; 带修改的BIT套主席树:if(!o)o=++gt; 3.树剖:应为 while(top[x]!=top[y]){if(dep[t ...
分类:
其他好文 时间:
2018-12-15 15:55:22
阅读次数:
174
link 其实可以发现我们选择切的顺序可以颠换。所以我们可以设$dp(i,j)$表示为前i个共切j的最大得分,然后$dp(i,j)=max(dp(i-1,z)+s[z] \times (s[i]-s[z])),s[i]=\sum_{i=1}^i a_i$。 然后发现这是个斜率优化的式子,但是斜率只有 ...
好题,这题是我理解的第一道斜率优化dp,自然要写一发题解。首先我们要写出普通的表达式,然后先用前缀和优化。然后呢?我们观察发现,x【i】是递增,而我们发现的斜率也是需要是递增的,然后就维护一个单调递增就行了。 放一个证明题解。 设f[i]表示在i点建仓库的最小费用,易得方程:f[i]=min(f[j ...
分类:
其他好文 时间:
2018-12-10 22:38:28
阅读次数:
227
题面 首先是愉快的推式子 $dp[i]=max(dp[i],\frac{sum[i]-sum[j-1]}{x[i]+(i-j)*d})(1<=j<=i<=n)$(考虑有一只僵尸正好走到门前被打死,这样最优) 然后发现这个玩意好像和平时的斜率优化不太一样 1 #include<cstdio> 2 #i ...
分类:
其他好文 时间:
2018-11-23 12:34:43
阅读次数:
169
斜率优化$DP$是难倒我很久的一个算法,我花了很长时间都难以理解。后来,经过无数次的研究加以对一些例题的理解,总算啃下了这根硬骨头。 ...
分类:
其他好文 时间:
2018-11-18 14:18:47
阅读次数:
171
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3507 设 f[i],则 f[i] = f[j] + (s[i]-s[j])*(s[i]-s[j]) + m 即 f[j] + s[j]*s[j] = 2*s[i]*s[j] + f[i] - s[i]*s[ ...
分类:
其他好文 时间:
2018-11-07 15:29:24
阅读次数:
198
hihocoder 1529 不上升序列 [斜率优化] Description 给出一个序列 $a[1...n]$ ,求构造一个 $b[1...n]$ ,满足$b_{i+1}\le b_{i}$,使得 $\sum\limits _{i=1}^{n} |a_i b_i|$ 最小 . + $n\le 5 ...
分类:
其他好文 时间:
2018-10-28 20:53:39
阅读次数:
141
解题思路 首先肯定是考虑如何快速求出一段铁路的价值。 $$ \sum_{i=1}^k \sum_{j=1, j\neq i}^kA[i]A[j]=(\sum_{i=1}^kA[i])^2 \sum_{i=1}^kA[i]^2 $$ 那么我们要维护如下两个东西,就可以在$O(1)$内求出一段铁路的价值 ...
分类:
其他好文 时间:
2018-10-10 21:55:53
阅读次数:
140
题目大意 给定一个长度为$n(n \leqslant 500000)$的数列,将其分割为连续的若干份,使得 $ \sum ((\sum_{i=j}^kC_i) +M) $ 最小。其中$C_i$为序列中的项的值,$M$为常数。$ j,k $ 表示在原序列中连续的某一段的起始位置和结束位置。 解题思路 ...
分类:
其他好文 时间:
2018-10-07 14:40:51
阅读次数:
169
我们都做过一道题(?)货币兑换,是用cdq分治来解决不单调的斜率优化 现在它放到了树上.. 总之先写下来dp方程,$f[i]=min\{f[j]+(dis[i]-dis[j])*p[i]+q[i]\} ,j是i的祖先,dis[i]-dis[j]<=l[i]$ ,其中dis[i]表示1号点到i号点的距 ...
分类:
其他好文 时间:
2018-09-24 18:56:27
阅读次数:
159