搬寝室

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 33261    Accepted Submission(s): 11387

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
2 1
1 3
 
Sample Output
4
 

题意:有n件物品,需要搬2*k件,每次般2件,左手一件,右手一件,搬物品需要消耗疲劳度(左手的重量与右手的重量之差的平方),需要输出一个最少的疲劳度

题解:先把物品按照重量从小到大排,这样肯定是相邻的两个一起拿比较省力,动态规划的时候分2种情况,拿和不拿,拿的话就是dp[i-1][j-2]+(a[j]-a[j-1])*(a[j]-a[j-1])。不拿就直接是dp[i][j-1].。所以状态转移方程为dp[i][j]=min(dp[i][j-1],dp[i-1][j-2]+(a[j]-a[j-1])*(a[j]-a[j-1]))

 #include<bits/stdc++.h>
using namespace std;
int a[],dp[][];
int main() {
int n,k;
while(~scanf("%d %d",&n,&k)) {
memset(a,,sizeof(a));
for(int i=; i<=n; i++) {
scanf("%d",&a[i]);
}
sort(a+,a++n);
for(int i=; i<=k; i++)//2k件也就是k对
for(int j=; j<=n; j++)
if(j>=*i) {
dp[i][j]=min(dp[i][j-],dp[i-][j-]+(a[j]-a[j-])*(a[j]-a[j-])); }
else
dp[i][j]=1e9; printf("%d\n",dp[k][n]);
}
return ;
}

hdu1421搬寝室(动态规划)的更多相关文章

  1. hdu---(1421)搬寝室(dp)

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

  2. 九度OJ 1452 搬寝室 -- 动态规划

    题目地址:http://ac.jobdu.com/problem.php?pid=1452 题目描述: 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3 ...

  3. HDU-1421 搬寝室【dp】

    题目链接:https://vjudge.net/contest/214662#problem/E 题目大意:                                               ...

  4. hdu1421 搬寝室(dp)

    此题是动态规划题. 解题思路: 用w[i]存储n个物品的重量,对其进行排序. 那么当取了第i个物品,必然会取第i-1个物品. 令dp[i][j]表示前i个物品,取j对的最小疲劳度. 若取第i个物品 则 ...

  5. HDU1421:搬寝室(线性dp)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1421 又是一道,没有思想的题,看了题解,我发现我的dp题几乎都看了题解,我总是想不好状态转移方程,汗颜,以 ...

  6. hdu-1421搬寝室(dp)

    http://acm.hdu.edu.cn/showproblem.php?pid=1421; 思路:先将所给的椅子的价值按升序排列,举个例子,四张椅子的价值分别为a,b,c,d(a<b< ...

  7. hdu1421 搬寝室 DP

    转载: /*证明:从4个数中 a b c d  依次递增: 选取相邻的两个数一定是最小得 及:(a-b)^2+(c-d)^2<(a-c)^2+(b-d)^2&&(a-b)^2+( ...

  8. HDU1421搬寝室(简单DP)

    当然,还可以加滚动数组优化. #include<cstdio> #include<cstdlib> #include<iostream> #include<m ...

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

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

随机推荐

  1. nginx/apache连接数梳理

    统计连接数,使用netstat命令或ss命令都可以1)统计连接数(80端口) [root@wang ~]# netstat -nat|grep -i "|wc -l 或者:netstat - ...

  2. ZOJ 1709 Oil Deposits(dfs,连通块个数)

    Oil Deposits Time Limit: 2 Seconds      Memory Limit: 65536 KB The GeoSurvComp geologic survey compa ...

  3. 智能指针 与 oc中的指针

     智能指针 与 oc中的指针 智能指针的原理及实现 当类中有指针成员时,一般有两种方式来管理指针成员:一是采用值型的方式管理,每个类对象都保留一份指针指向的对象的拷贝:另一种更优雅的方式是使用智能指针 ...

  4. 前端基础-CSS如何布局以及文档流

    一. 网页布局方式 二. 标准流 三. 浮动流 四. 定位流 一. 网页布局方式 1.什么是网页布局方式 布局可以理解为排版,我们所熟知的文本编辑类工具都有自己的排版方式, 比如word,nodpad ...

  5. [译]React如何区别class和function

    原文 How Does React Tell a Class from a Function? 译注: 一分钟概览-- React最后采用了在React.Component上加入isReactComp ...

  6. 微信小程序 | 未来O2O电商的“阴谋”

    发展历史 2016年1月11日,微信之父张小龙时隔多年的公开亮相,提出了公众号服务的短板,而透露微信内部正在研发的新形态工具,称之"微信小程序". 2016年9月21日,微信小程序 ...

  7. NodeJ Koa2 安装使用 reeber

    介绍 Koa 是由 Express 原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的 Web 框架. 使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的 ...

  8. 小程序OSS图片上传

    图片上传加水印问题,代码如下! chooseImage: function (e) { var that = this; wx.chooseImage({ sizeType: ['original', ...

  9. Illegal modifier for parameter userMapper; only final is permitted

    报错的原因是 package com.chen.service.impl; import java.io.IOException; import java.io.InputStream; import ...

  10. PHPStorm等编辑器debug调试(包括使用postman、soapUI)

    很多人在开发的时候,需要进行断点调试,但是很多人配置了很多,还是调试不了,其实是不需要这么麻烦的. 注意:PHPStorm等编辑器debug的配置不用进行任何配置,默认配置就好 实质上,断点调试的时候 ...