hdu---(1421)搬寝室(dp)
搬寝室
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 17687 Accepted Submission(s): 6000
寝室是很累的,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件物品后的最佳状态是怎样的(也就是最低的疲劳度),请告诉他吧.
1 3
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int maxn=;
const int inf=0x3f3f3f3f;
int aa[maxn],dp[maxn][maxn];
int n,k;
int main()
{
while(scanf("%d%d",&n,&k)!=EOF)
{
for(int i=;i<=n;i++)
scanf("%d",aa+i);
sort(aa+,aa+n+);
for(int i=;i<=n;i++)
{
for(int j=;j<=k;j++)
dp[i][j]=inf;
}
dp[][]=;
for(int i=;i<=n;i++)
{
for(int j=;*j<=i;j++){
dp[i][j]=min(dp[i-][j],dp[i-][j-]+(aa[i]-aa[i-])*(aa[i]-aa[i-]));
}
}
printf("%d\n",dp[n][k]);
}
return ;
}
对其进行优化,压缩空间由于只涉及到dp[i-1],dp[i-2],dp[i];所以舍去其他空间
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int maxn=;
const int inf=0x3f3f3f3f;
int aa[maxn],dp[][maxn];
int n,k;
int main()
{
while(scanf("%d%d",&n,&k)!=EOF)
{
for(int i=;i<=n;i++)
scanf("%d",aa+i);
sort(aa+,aa+n+);
for(int i=;i<=;i++)
{
for(int j=;j<=k;j++)
dp[i][j]=inf;
}
dp[][]=;
for(int i=;i<=n;i++)
{
for(int j=;*j<=i;j++){
dp[i%][j]=min(dp[(i-)%][j],dp[(i-)%][j-]+(aa[i]-aa[i-])*(aa[i]-aa[i-]));
}
}
printf("%d\n",dp[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)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1421 Problem Description 搬寝室是很累的,xhd深有体会.时间追述2006年7月9 ...
- HDU 1421 搬寝室 (线性dp 贪心预处理)
搬寝室 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...
- hdu 1421 搬寝室(dp)
Problem Description 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3号楼,因为10号要封楼了.看着寝室里的n件物品,xhd开始发呆, ...
- 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 1421 搬寝室 解题报告(超详细)
**搬寝室 Time Limit: 2000/1000 MS Memory Limit: 65536/32768 K Problem Description 搬寝室是很累的,xhd深有体会.时间追述2 ...
- 【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[ ...
随机推荐
- MySQL性能优化的21个最佳实践 和 mysql使用索引
1. 为查询缓存优化查询 当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了. 2. EXPLAIN SELECT 查询 ...
- Oracle的数据恢复——Flashback用法汇总
/* 11g的flashbackup 分好几种,分别用途不一样. A.flashback database 闪回数据库,简单理解就是把数据库闪回到某个以前的时间点, 能恢复到的最早的SCN, 取决与F ...
- [51NOD1065] 最小正子段和(STL,前缀和)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1065 估计没人这么做吧-用一个set维护前缀和,但是set的l ...
- request 获取各种路径
从request获取各种路径总结 request.getRealPath("url"); // 虚拟目录映射为实际目录 request.getRealPath("./&q ...
- 解决properties文件乱码问题(eclipse和MyEclipse)
windows——>Preferences——>General——>ContentTypes——>Text——>Java Properties File,设置Defaul ...
- win8下安装matlab7.0
在win8下安装matlab7.0会出现一些兼容性的问题,需要设置系统环境变量,修改方式如下. 1.设置环境变量,方法:在你的安装目录的\MATLAB7\bin\win32有一个叫做atlas_Ath ...
- XAML基础
1.标记扩展 将一个对象的属性值依赖在其他其他对象的某个属性上 用法:标记属性的一般用法是:Attribute = Value,使用标记拓展,Value字符串是由一对花括号及其括起来的内容组成,XAM ...
- TCP三次握手及四次挥手详细 转
一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下: ...
- iOS - Swift String 字符串
前言 public struct String public class NSString : NSObject, NSCopying, NSMutableCopying, NSSecureCodin ...
- JavaWeb 8 Cookie
JavaWeb 8 Cookie 2. 会话管理入门 2.1 生活中会话 我: 小张,你会跳小苹果码? 小张: 会,怎么了? ...