搬寝室

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 20642    Accepted Submission(s): 7013

Problem Description

搬寝室是非常累的,xhd深有体会.时间追述2006年7月9号,那天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

  1. 2 1
  2. 1 3
 

Sample Output

  1. 4
 
 题目链接:

pid=1421">http://acm.hdu.edu.cn/showproblem.php?pid=1421



题目大意:久违的中文题,不解释



题目分析:显然左右手物品重量越接近越好,先依照重量从小到大排序,然后预处理出相邻两个数的差值的平方b[i] = (a[i + 1] - a[i])^2,这样预处理也直接把2k化成k了,显然b[i]和b[i + 1]是不能同一时候取的。定义dp[i][j]为b数组的前i个取了j个时的最少疲劳度。转移方程dp[i][j] = min(dp[i - 1][j], dp[i - 2][j - 1] + b[i]),初始化dp[i][0]=0,dp[1][1]=b[1],其它INF

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. using namespace std;
  5. int const MAX = 2005;
  6. int const INF = 0x3fffffff;
  7. int dp[MAX][MAX], a[MAX], b[MAX];
  8.  
  9. int main()
  10. {
  11. int n, k;
  12. while(scanf("%d %d", &n, &k) != EOF)
  13. {
  14. for(int i = 1; i <= n; i++)
  15. scanf("%d", &a[i]);
  16. sort(a + 1, a + n + 1);
  17. int sum = 0;
  18. for(int i = 1; i < n; i++)
  19. b[i] = (a[i + 1] - a[i]) * (a[i + 1] - a[i]);
  20. n --;
  21. for(int i = 0; i <= n; i++)
  22. {
  23. for(int j = 0; j <= k; j++)
  24. dp[i][j] = INF;
  25. dp[i][0] = 0;
  26. }
  27. dp[1][1] = b[1];
  28. for(int i = 2; i <= n; i++)
  29. for(int j = 1; j <= k; j++)
  30. dp[i][j] = min(dp[i - 1][j], dp[i - 2][j - 1] + b[i]);
  31. printf("%d\n", dp[n][k]);
  32. }
  33. }

HDU 1421 搬寝室 (线性dp 贪心预处理)的更多相关文章

  1. hdu 1421 搬寝室(dp)

    Problem Description 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3号楼,因为10号要封楼了.看着寝室里的n件物品,xhd开始发呆, ...

  2. hdu 1421 搬寝室 (dp)

    思路分析: dp[i][j] 表示选取到第 i 个   组成了 j 对的最优答案. 当然排序之后 选取相邻两个是更优的. if(i==j*2) dp[i][j] = dp[i-2][j-1] + w[ ...

  3. hdu 1421:搬寝室(动态规划 DP + 排序)

    搬寝室 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  4. 题解报告:hdu 1421 搬寝室(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1421 Problem Description 搬寝室是很累的,xhd深有体会.时间追述2006年7月9 ...

  5. HDU 1421 搬寝室(经典DP,值得经常回顾)

    搬寝室 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status D ...

  6. HDU 1421 搬寝室

    搬寝室 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  7. hdu 1241 搬寝室 水dp

    搬寝室 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem Desc ...

  8. HDU 1421 搬寝室 解题报告(超详细)

    **搬寝室 Time Limit: 2000/1000 MS Memory Limit: 65536/32768 K Problem Description 搬寝室是很累的,xhd深有体会.时间追述2 ...

  9. [HDU 1421]搬寝室(富有新意的DP)

    题目地址:pid=1421" target="_blank">http://acm.hdu.edu.cn/showproblem.php? pid=1421 题目大 ...

随机推荐

  1. (转) 淘淘商城系列——Redis五种数据类型介绍

    http://blog.csdn.net/yerenyuan_pku/article/details/72855562 Redis支持五种数据类型:string(字符串),hash(哈希),list( ...

  2. RabbitMQ系列(二)--基础组件

    声明:对于RabbitMQ的学习基于某课网相关视频和<RabbitMQ实战指南>一书,后续关于RabbitMQ的博客都是基于二者 一.什么是RabbitMQ RabbitMQ是开源代理和队 ...

  3. wpf 界面加载 Command

    导入 xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" <i:Interaction. ...

  4. Python&机器学习总结(二)

    ① Python中的Sort Python中的内建排序函数有 sort()和sorted()两个 list.sort(func=None, key=None, reverse=False(or Tru ...

  5. X shell 6下载安装和简单使用

    ①前言:昨天已经上线了的智能家居项目出现了一个BUG,需要重新写个html发布到服务器上,由于公司大佬都在忙别的项目,时间比较紧张,这种小事就落到了我这个小喽啰身上.其实,写个html我还是可以接受的 ...

  6. Win10中创建Hyper-V虚拟机

    Win10虚拟机创建方法方法 1 开始菜单->所有应用->Windows系统->控制面板,程序->启用或关闭Windows功能,勾选Hyper-V下所有选项 如果Hyper-V ...

  7. MySQL5

    MySQL数据库5 mysqldump备份恢复数据库 冷备份还原数据库 逻辑卷快照备份还原数据库 xtrabackup备份还原数据库 1. 备份和恢复概述 适用场景 硬件故障.软件故障.自然灾害.黑客 ...

  8. 利用WebUploader进行图片批量上传,在页面显示后选择多张图片压缩至指定路径【java】

    WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览 ...

  9. JDBC插入数据时中文变为问号的解决方法

    JDBC插入数据时中文变为问号的解决方法 制作人:全心全意 出现中文变问号的代码: String url = "jdbc:mysql://localhost:3306/test"; ...

  10. react入门----事件监听

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...