题解报告:hdu 1421 搬寝室(递推dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1421
Problem Description
Input
Output
Sample Input
Sample Output
解题思路:这是一道典型的dp问题。状态转移思想:因为要选择差值较小的两件物品,所以将物品按质量升序排序后,从前i件物品中拿走j对物品(j*2<=i)有如下两种情况:
(1)不拿第i件物品,则从前i件物品中拿走j对和从前i-1件物品拿走j对的最小疲劳值一样为dp[i][j]=dp[i-1][j]。
(2)拿第i件物品,则第i件物品肯定和第i-1件物品一起拿,则dp[i][j]=dp[i-2][j-1]+(a[i]-a[i-1])^2,即从前i-2件中拿j-1对的疲劳值加上拿了当前两件物品的疲劳值,于是可得到状态转移方程:dp[i][j]=min(dp[i-1][j],dp[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1]))。
AC代码:
#include<bits/stdc++.h>
using namespace std;
int a[],dp[][];
int main(){
int n,k;
while(cin>>n>>k){
memset(dp,0x3f,sizeof(dp));//初始化为最大值,表示还没选取,以便比较取最小值
dp[][]=;//从0件物品中取走0对的疲劳值为0
memset(a,,sizeof(a));//清空
for(int i=;i<=n;i++){
cin>>a[i];
dp[i][]=;//同时将前i件物品中取走j=0对赋初值为0,表示不需要取任何物品
}
sort(a+,a+n+);//排序
for(int i=;i<=n;i++){//i从第2件开始挑选2*k件物品
for(int j=;j*<=i&&j<=k;j++)//j从挑选1对开始选择取与不取
dp[i][j]=min(dp[i-][j],dp[i-][j-]+(a[i]-a[i-])*(a[i]-a[i-]));
}
cout<<dp[n][k]<<endl;//从n件物品中选择k对的最小疲劳值
}
return ;
}
题解报告:hdu 1421 搬寝室(递推dp)的更多相关文章
- hdu 1421:搬寝室(动态规划 DP + 排序)
搬寝室 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- HDU 1421 搬寝室(经典DP,值得经常回顾)
搬寝室 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status D ...
- HDU 1421 搬寝室 解题报告(超详细)
**搬寝室 Time Limit: 2000/1000 MS Memory Limit: 65536/32768 K Problem Description 搬寝室是很累的,xhd深有体会.时间追述2 ...
- HDU 1421 搬寝室 (线性dp 贪心预处理)
搬寝室 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...
- HDU 1421 搬寝室
搬寝室 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- hdu 1421 搬寝室(dp)
Problem Description 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3号楼,因为10号要封楼了.看着寝室里的n件物品,xhd开始发呆, ...
- 【dp】HDU 1421 搬寝室
http://acm.hdu.edu.cn/showproblem.php?pid=1421 [题意] 给定n个数,要从n个数中选择k个二元组{x,y},最小化sum{(x-y)^2} 2<=2 ...
- [HDU 1421]搬寝室(富有新意的DP)
题目地址:pid=1421" target="_blank">http://acm.hdu.edu.cn/showproblem.php? pid=1421 题目大 ...
- hdu 1421 搬寝室 (dp)
思路分析: dp[i][j] 表示选取到第 i 个 组成了 j 对的最优答案. 当然排序之后 选取相邻两个是更优的. if(i==j*2) dp[i][j] = dp[i-2][j-1] + w[ ...
随机推荐
- Ansible 详细用法说明(一)
一.概述 运维工具按需不需要有代理程序来划分的话分两类: agent(需要有代理工具):基于专用的agent程序完成管理功能,puppet, func, zabbix agentless(无须代理工具 ...
- RHEL 启动系统及故障排除
一:Linux的启动过程: 开机加电自检->MBR引导(boot loader占446字节,分区列表64字节,magic占2字节)-->grub菜单(MBR是grub的第一个字段,第二个字 ...
- [Bash] Create nested folder in Bash
We can create a single folder by doing: mkdir onefolder If we want to create nested folder we need t ...
- Ajax系列之四:问题总结
1.最经典的就是ie下的缓存问题了. 假设使用的是get.那么在ie下出现缓存问题.导致代码仅仅运行一次. 解决的方法就是加时间戳或者随机数,使url变为唯一,这样就不会出现ie 下的缓存问题了, ...
- composer-安装插件包
上一步完成后,选定国内镜像地址,以为下载插件包做准备 https://pkg.phpcomposer.com/ 安装完componser后使用下面这条命令即可(设置国内镜像地址): composer ...
- 鸟哥的Linux私房菜-----13、账号管理
- window.location.hashs属性介绍
长话短说. location是javascript里边管理地址栏的内置对象.比方location.href就管理页面的url,用location.href=url就能够直接将页面重定向url. 而lo ...
- STM32 USB复合设备编写
目的 完成一个CDC + MSC的复合USB设备 可以方便在CDC,MSC,复合设备三者间切换 可移植性强 预备知识 cube中USB只有两个入口. main函数中的MX_USB_DEVICE_Ini ...
- STL vector的介绍(1)
尝试下翻译STL里面的一些easy和算法.四级过了.六级刚考.顺便练练自己的英语水平.翻译的不好的地方请大神多多不吝赐教哈.方便我改正. 原来均来自:http://www.cplusplus.com/ ...
- WebService(2)-XML系列之用Stax操作Xml
源代码下载:链接: http://pan.baidu.com/s/1ntL1a7R password: rwp1 本文主要讲述:利用Stax处理xml文档 一.读取xml 1.基于光标的查找 核心:X ...