HDU1424 动态规划

该博客讲述了如何解决一个关于搬运寝室物品的动态规划问题,其中疲劳度与物品重量差的平方成正比。博主提出了一种算法,通过排序物品重量并使用动态规划求解最小疲劳度。
摘要由CSDN通过智能技术生成

搬寝室

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4850    Accepted Submission(s): 1524

Problem Description

搬 寝室是很累的,xhd 深有体会. 时间追述200679, 那天xhd 迫于无奈要从27 号楼搬到3 号楼, 因为10 号要封楼了. 看着寝室里的n 件物 品,xhd 开始发呆, 因为n 是一个小于2000 的整数, 实在是太多了, 于是xhd 决定随便搬2*k 件过去就行了. 但还是会很累, 因为2*k 也不小是一个不 大于n 的整数. 幸运的是xhd 根据多年的搬东西的经验发现每搬一次的疲劳度是和左右手的物品的重量差的平方成正比( 这里补充一句,xhd 每次搬两件东西, 左手一件右手一件). 例如xhd 左手拿重量为3 的物品, 右手拿重量为6 的物品, 则他搬完这次的疲劳度为(6-3)^2 = 9. 现在可怜的xhd 希望知道搬完这2*k 件物品后的最佳状态是怎样的( 也就是最低的疲劳度), 请告诉他吧.

 

 

Input

每组输入数据有两行, 第一行有两个数n,k(2<=2*k<=n<2000). 第二行有n 个整数分别表示n 件物品的重量( 重量是一个小于2^15 的正整数).

 

 

Output

对应每组输入数据, 输出数据只有一个表示他的最少的疲劳度, 每个一行.

 

 

Sample Input

2 1

1 3

 

 

Sample Output

4

 

 

先把所有物品按照重量从小到大排序 , dp[i][j] 为前 i 个物品中伴奏 j 对要花费的最小疲劳度 , 转移方程为 :dp[i][j]= min(dp[i-1][j],dp[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1]));

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值