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 题目大 ...
随机推荐
- SQL SERVER 2008 在某表中新增一列时失败
背景:新增列语句如:“alter table 表名 add 列名 float default 0 with values”(用VS2010做网站,这句话是在C#代码里执行的) 报错提示: 警告: 已经 ...
- 【笔记JS/HTML/CSS】用div实现个性化button,背景半透明
html中的button默认样式..不太能看,如果调一调背景色和字体的话也挺适合简洁的页面设计 于是决定配合JS,用html中的div完成button 最终结果图: html代码:(first_pas ...
- 系统异常 NSException.h
FOUNDATION_EXPORT NSExceptionName const NSGenericException; FOUNDATION_EXPORT NSExceptionName const ...
- Xcode 6 Beta 高速官方下载地址
推荐迅雷下载: http://adcdownload.apple.com//wwdc_2014/xcode_6_beta_ie8g3n/xcode_6_beta.dmg
- SDK _ 静态控件的使用
静态控件的使用 静态控件主要区分两种使用方式:文本 \ 图片 在使用静态控件的时候,ID始终默认为 IDC_STATIC,需要进行更改 怎样通过可视化编程显示一张图片 需要添加一个位图资源 需要添加一 ...
- 设置CAD显示窗体
AcDbViewTableRecord view; AcGePoint3d max = acdbHostApplicationServices()->workingDatabase()-> ...
- 数据库——DBUtils和连接池
第一章 DBUtils如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC开发,本案例我们讲采用apache commons组件一个成员:DBUtils.DBUtils就是JDBC的简 ...
- POJ2152 Fire (树形DP)
题意:n个城市n-1条边 组成一棵树 在每个城市修建消防站会有一个花费costi 每个城市能防火当且仅当地图上距离他最近的消防站距离小于di 问如何修建消防站 使地图上所有的城市都有预防火灾的能力 ...
- 洛谷——P1168 中位数
P1168 中位数 题目描述 给出一个长度为NN的非负整数序列$A_i$,对于所有1 ≤ k ≤ (N + 1),输出$A_1, A_3, …, A_{2k - 1}A1,A3,…,A2k−1 ...
- NOIP2016 DAY1 T2天天爱跑步
传送门 题目描述 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.«天天爱跑步»是一个养成类游戏,需要玩家每天按时上线,完成打卡任务. 这个游戏的地图可以看作一一棵包含 ...