HDU 1421 搬寝室 (线性dp 贪心预处理)
搬寝室
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 20642 Accepted Submission(s): 7013
Problem Description
= 9.如今可怜的xhd希望知道搬完这2*k件物品后的最佳状态是如何的(也就是最低的疲劳度),请告诉他吧.
Input
Output
Sample Input
2 1
1 3
Sample Output
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
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int const MAX = 2005;
int const INF = 0x3fffffff;
int dp[MAX][MAX], a[MAX], b[MAX]; int main()
{
int n, k;
while(scanf("%d %d", &n, &k) != EOF)
{
for(int i = 1; i <= n; i++)
scanf("%d", &a[i]);
sort(a + 1, a + n + 1);
int sum = 0;
for(int i = 1; i < n; i++)
b[i] = (a[i + 1] - a[i]) * (a[i + 1] - a[i]);
n --;
for(int i = 0; i <= n; i++)
{
for(int j = 0; j <= k; j++)
dp[i][j] = INF;
dp[i][0] = 0;
}
dp[1][1] = b[1];
for(int i = 2; i <= n; i++)
for(int j = 1; j <= k; j++)
dp[i][j] = min(dp[i - 1][j], dp[i - 2][j - 1] + b[i]);
printf("%d\n", dp[n][k]);
}
}
HDU 1421 搬寝室 (线性dp 贪心预处理)的更多相关文章
- hdu 1421 搬寝室(dp)
Problem Description 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3号楼,因为10号要封楼了.看着寝室里的n件物品,xhd开始发呆, ...
- hdu 1421 搬寝室 (dp)
思路分析: dp[i][j] 表示选取到第 i 个 组成了 j 对的最优答案. 当然排序之后 选取相邻两个是更优的. if(i==j*2) dp[i][j] = dp[i-2][j-1] + w[ ...
- hdu 1421:搬寝室(动态规划 DP + 排序)
搬寝室 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- 题解报告:hdu 1421 搬寝室(递推dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1421 Problem Description 搬寝室是很累的,xhd深有体会.时间追述2006年7月9 ...
- HDU 1421 搬寝室(经典DP,值得经常回顾)
搬寝室 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status D ...
- HDU 1421 搬寝室
搬寝室 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- hdu 1241 搬寝室 水dp
搬寝室 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Desc ...
- HDU 1421 搬寝室 解题报告(超详细)
**搬寝室 Time Limit: 2000/1000 MS Memory Limit: 65536/32768 K Problem Description 搬寝室是很累的,xhd深有体会.时间追述2 ...
- [HDU 1421]搬寝室(富有新意的DP)
题目地址:pid=1421" target="_blank">http://acm.hdu.edu.cn/showproblem.php? pid=1421 题目大 ...
随机推荐
- es6数值扩展
1. 二进制和八进制表示法 从 ES5 开始,在严格模式之中,八进制就不再允许使用前缀0表示,ES6 进一步明确,要使用前缀0o表示. ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0 ...
- 微信小程序打卡第五天
2018-02-1823:55:53大年初三 微信小程序已经学了5个夜晚了,没有很努力,只是简单地接触,感觉从今天开始有了突破的进展,很爽! 无意间发现一个很好的教程,也是一个老哥分享的,很给力 ht ...
- gearman的安装与使用
Gearman是一个分发任务的程序框架,它会对作业进行排队自动分配到一系列机器上.gearman跨语言跨平台,很方便的实现异步后台任务.php官方收录:http://php.net/manual/zh ...
- java中随机生成字符串的方法(三种)
org.apache.commons.lang(2.6): 链接:https://pan.baidu.com/s/1k_oeA5AjSt6evoR7zT8gpQ 提取码:yhl5 1.生成的字符串每个 ...
- 微服务网关从零搭建——(七)更改存储方式为oracle
资源准备: 下载开源项目 新建oracle表: -- ---------------------------- -- Table structure for OcelotGlobalConfigura ...
- JAVA基础——异常--解析
简介 异常处理是java语言的重要特性之一,<Three Rules for effective Exception Handling>一文中是这么解释的:它主要帮助我们在debug的 ...
- Python学习第二阶段,day1, 装饰器,生成器,迭代器
装饰器 不得不说,这是对初学者最难以理解的概念了,虽然我学过面向对象,但还是被搞懵逼了..前面还好理解,主要是后面“装饰器的装饰器”我理解不了.装饰器工厂,根据传入的参数不同去返回不同的装饰器,我不得 ...
- linux cut-连接文件并打印到标准输出设备上
博主推荐:获取更多 linux文件内容查看命令 收藏:linux命令大全 cut命令用来显示行中的指定部分,删除文件中指定字段.cut经常用来显示文件的内容,类似于下的type命令. 说明:该命令有两 ...
- jmeter录制火狐浏览器
昨天看youtube,居然发现有这功能,啊哈哈 听不懂英语 也能有收获. 一.Jmeter 文件中选择Templates->Recording 二.创建之后,自动出现一个模板: 1. Threa ...
- Djang学习笔记-1
1.django的生命周期: url匹配 -> 视图函数 -> 返回用户字符串 url匹配 -> 视图函数 -> 打开一个HTML文件,并读取内容2.创建Django proj ...