HDU 1421
刚开始的思路: 想到将所有物品重量的差求出来排序然后直接取出前m对最小的
忽略了 一个差代表2个个物品被取走了,那么其他包含这2个物品的差就应该消失,实现标记很困难
DP思路
先将所以重量排个序(那么每个物品的前后2个物品与此物品的差最小,注意到差值和物品重量大小无关)
状态
dp[i][j]表遍历到到第i件物品, j 代表已经选了j对物品,dp[i][j]代表n件物品取j对的最小疲劳值- 选 $dp[i][j] = dp[i-2][j-1]+(num[i]-num[i-1])^2$
- 不选 $dp[i][j] = dp[i-1][j]$
- 状态转移: $dp[i][j] = min(dp[i-2][j-1]+(num[i]-num[i-1])^2),dp[i-1][j]$
初始化条件:
dp[i][0]一对不取消耗值为0
1 | |
HDU 1421
https://blog.989883.xyz/2019/10/27/csdn/HDU 1421/