
动态规划
文章平均质量分 78
我不会额
这个作者很懒,什么都没留下…
展开
-
HDU - 3480 Division
题目:给你n个数,将其分为m组,每组的价值定义为最大值与最小值的差值的平方,求总价值最小 思路: 首先将n个数从小到大排序。 然后设 dp[i][j]表示前j个数分成i组的最小花费。 则 dp[i][j]=min{dp[i-1][k]+(a[j]-a[k+1])^2} 0 利用斜率优化DP,整理下就可以出来了。 代码: #pragma comment(linker, "/STA原创 2017-10-06 17:57:15 · 341 阅读 · 0 评论 -
HDU - 2829 Lawrence
题目:将一个序列分成m+1段,每段的价值定义为任意两个数的乘积之和,求总的最小价值 思路: cost[i][j]表示i到j成为一段的价值 设dp[i][j]表示前j个数分成i段的最小价值 dp[i][j]=min{dp[i-1][k]+cost[k+1][j]} cost[1][i]=cost[1][k]+cost[k+1][i]+sum[k]*(sum[i]-sum[k]) 将cos原创 2017-10-07 00:28:18 · 362 阅读 · 0 评论 -
HDU - 3507 Print Article
题目:要输出序列a[n],每连续输出一段连续子序列的费用是连续输出的数字和的平方加上常数M,让我们求总 费用的最小值。 思路: 参考:http://www.cnblogs.com/kuangbin/archive/2012/08/26/2657650.html 设dp[i]表示输出前i个的最小费用,那么有如下的DP方程: dp[i]= min{ dp[j]+(sum[i]-sum[j])^原创 2017-10-05 16:37:17 · 320 阅读 · 0 评论 -
HDU - 3045 Picnic Cows
题目:有n个数,要分成若干组,每组至少L个数,每组的价值定义为每个数减去该组数的最小值的和,求各组数的价值和的最小值 思路: 先对序列arr按从小到大排序,求出前缀和 设dp[i]表示前i个数的合法分组的最小值 dp[i]=min{dp[j]+sum[i]-sum[j]-arr[j+1]*(i-j)},j 然后就是斜率优化了 代码: #pragma comment(linker, "原创 2017-10-05 22:24:40 · 330 阅读 · 0 评论