借着这个题学习了一下dp的斜率优化,感觉这东西好神啊。。。
先说一下裸的O(n2n^2)dp吧:
s[i]=∑i=1ic[i]s[i]=\sum_{i=1}^{i} c[i]
显然我们有
f[i]=mink=0i?1f[k]+(s[i]?s[k]?L)2f[i]=\min_{k=0}^{i-1} f[k]+(s[i]-s[k]-L)^2
然而这个转移是O(n2n^2) 的,在n=5000...
分类:
其他好文 时间:
2015-05-25 22:28:56
阅读次数:
161
Cross the WallTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 327680/327680 K (Java/Others)Total Submission(s): 4479Accepted Submission(s): 812Pro...
分类:
其他好文 时间:
2015-05-21 16:59:48
阅读次数:
166
Print ArticleTime Limit: 9000/3000 MS (Java/Others)Memory Limit: 131072/65536 K (Java/Others)Total Submission(s): 6653Accepted Submission(s): 2054Prob...
分类:
其他好文 时间:
2015-05-17 23:33:49
阅读次数:
139
POJ 1973这道题以前做过的。今儿重做一次。由于每个程序员要么做A,要么做B,可以联想到0/1背包(谢谢N巨)。这样,可以设状态dp[i][j]为i个程序员做j个A项目同时,最多可做多少个B项目。枚举最后一个程序员做多少个A项目进行转移(0/1)。dp[i][j]=max{dp[i-1][k]+...
分类:
其他好文 时间:
2015-05-14 23:36:15
阅读次数:
213
特别行动队Description 这个好像斜率优化不是一般地明显了啊...只不过要分a的正负两种情况考虑是维护上凸还是下凸 1 /************************************************************** 2 Problem: 1911 3...
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1010学习斜率dp的话请翻看我的 dp斜率优化小计递推公式:f[i]=min(f[j]+(i-j-1+sum[i]-sum[j]-L)^2) , j10 #include 11 #includ...
分类:
其他好文 时间:
2015-04-28 17:53:47
阅读次数:
289
DP+斜率优化 首先我们根据这个分割的过程可以发现:总得分等于k+1段两两的乘积的和(乘法分配律),也就是说与分割顺序是无关的。 再对乘积进行重分组(还是乘法分配律)我们可以转化为:$ans=\sum$第 i 段×前 i-1 段的和 所以我们就可以以分割次数为阶段进行DP啦~ 令f[i][j...
对于一类状态转移方程可以写成
f[i]=min/max(a[i]*b[j]+G[j])+H[i](a、H是只和i有关的函数,b、G是只和j有关的函数)
且a和b至少有一个是单调的动态规划问题,我们可以通过数形结合来优化它。这类问题一般是要把一个线性序列分成若干段,暴力解决时间复杂度一般是O(n^2),如果a和b都是单调的,可以优化到O(n),如果只有一个是单调的,可以优化到O(nlog2n)。...
分类:
其他好文 时间:
2015-04-17 11:24:57
阅读次数:
490