搬寝室

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 20642    Accepted Submission(s): 7013

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
 
 题目链接:

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 贪心预处理)的更多相关文章

  1. hdu 1421 搬寝室(dp)

    Problem Description 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3号楼,因为10号要封楼了.看着寝室里的n件物品,xhd开始发呆, ...

  2. hdu 1421 搬寝室 (dp)

    思路分析: dp[i][j] 表示选取到第 i 个   组成了 j 对的最优答案. 当然排序之后 选取相邻两个是更优的. if(i==j*2) dp[i][j] = dp[i-2][j-1] + w[ ...

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

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

  4. 题解报告:hdu 1421 搬寝室(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1421 Problem Description 搬寝室是很累的,xhd深有体会.时间追述2006年7月9 ...

  5. HDU 1421 搬寝室(经典DP,值得经常回顾)

    搬寝室 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status D ...

  6. HDU 1421 搬寝室

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

  7. hdu 1241 搬寝室 水dp

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

  8. HDU 1421 搬寝室 解题报告(超详细)

    **搬寝室 Time Limit: 2000/1000 MS Memory Limit: 65536/32768 K Problem Description 搬寝室是很累的,xhd深有体会.时间追述2 ...

  9. [HDU 1421]搬寝室(富有新意的DP)

    题目地址:pid=1421" target="_blank">http://acm.hdu.edu.cn/showproblem.php? pid=1421 题目大 ...

随机推荐

  1. Python+selenium学习(二) selenium 定位不到元素

    转载:https://www.cnblogs.com/tarrying/p/9681991.html tarrying selenium的三种等待时间 //隐式等待(20秒以内没哥一段时间就会去找元素 ...

  2. 【DVWA】【SQL Injection(Blind)】SQL盲注 Low Medium High Impossible

    1.初级篇 Low.php 加单引号提交 http://localhost/DVWA-master/vulnerabilities/sqli_blind/?id=1'&Submit=Submi ...

  3. ES 提案的各状态

    JavaScrpit,亦即 ECMAScript,新功能的演进是由一个叫 TC39 这么个组织在统筹协调和推进的. 一般新特性会由社区先提案,被采纳后开始进入下一流程.一个提案到最终落地到成为标准,需 ...

  4. Java变量及数据类型

    变量及数据类型 变量 变量定义格式:数据类型 变量名 = 初始化值; 基本数据类型 整形数据 package com.ahabest.demo; //输出整形数据的最小值,默认值,最大值,二进制位数 ...

  5. .net core 中简单封装Dapper.Extensions 并使用sqlsuger自动生成实体类

    引言 由公司需要使用dapper  同时支持多数据库 又需要支持实体类 又需要支持sql 还需要支持事务 所以采用了 dapper + dapperExtensions  并配套 生成实体类小工具的方 ...

  6. thymeleaf的使用及配置

    * th:action    <form id="login" th:action="@{/login}">......</form>  ...

  7. ruby学习之路(一)

    学习ruby最好的方法就是下载源码包,里面带有sample和test,是入门学习的最好实例. 我下载的是2.1.0版本,首先./configure,然后make,sudo make install.从 ...

  8. pipreqs(找当前项目依赖的包)

    pipreqs pipreqs可以帮你找到当前项目的所有组件及其版本.就是当别人给你一个程序的时候,你要在自己电脑上运行起来,就需要安装程序所依赖的组件,总不能自己一个一个找吧. # 安装 pip3 ...

  9. Python面向对象之面向对象封装案例

    面向对象封装案例 封装 封装是面型对象编程的一大特点 面向对象编程的第一步--将属性和方法封装到一个抽象的类中: 外界使用类创建对象,然后让对象调用方法: 对象方法的细节都被封装在类的内部. 一个对象 ...

  10. list数组排序---stream

    import java.util.*;import java.util.stream.Collector;import java.util.stream.Collectors; public clas ...