hdu1421 搬寝室(dp)-程序员宅基地

技术标签: java  

我的第一个dp程序 哎! 可惜状态方程不是自己想的 有点小小的遗憾!!

搬寝室

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 107   Accepted Submission(s) : 40

 

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

 

状态方程

dp[k][i]=min(dp[k-1][i-2]+(a[i]-a[i-1])^2,dp[k][i-1]);

dp[k][i] 表示 k 对物品在前 i 个物品的最小值

代码:

 

View Code
#include<iostream>
#include<stdio.h>
#include<algorithm>
#define N 2005
using namespace std;
int dp[N/2][N];
int a[N];
 
void Init(int k)
{
    int i;
    dp[k][2*k]=0;
    for(i=2;i<=2*k;i+=2)
        dp[k][2*k]+=(a[i]-a[i-1])*(a[i]-a[i-1]);
}
 
int work(int n,int m)
{
    int i,k;
    sort(a+1,a+n+1);
    for(k=1;k<=m;k++)  Init(k);
    for(k=1;k<=m;k++)
    {
        for(i=2*k+1;i<=n;i++)
        {
            if((dp[k-1][i-2]+(a[i]-a[i-1])*(a[i]-a[i-1]))<dp[k][i-1])
                dp[k][i]=dp[k-1][i-2]+(a[i]-a[i-1])*(a[i]-a[i-1]);
            else dp[k][i]=dp[k][i-1];
        }
    }
    return dp[m][n];
}
 
int main()
{
    int n,k;
    while(scanf("%d%d",&n,&k)!=EOF)
    {
        int i;
        for(i=1;i<=n;i++)    cin>>a[i];
        int ans=work(n,k);
        printf("%d\n",ans); 
    }
    return 0;
}

转载于:https://www.cnblogs.com/zhourongqing/archive/2011/09/07/2170098.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/angtongyou1893/article/details/102151011

智能推荐

hive启动beeline报错

出现上面的问题执行以下代码。

【Hadoop】-Hive客户端:HiveServer2 & Beeline 与DataGrip & DBeaver[14]

DataGrip是由JetBrains公司推出的数据库管理软件,DataGrip支持几乎所有主流的关系数据库产品,如DB2、Derby、MySQL、Oracle、SQL Server等,也支持几乎所有主流的大数据生态圈SQL软件,并且提供了简单易用的界面,开发者上手几乎不会遇到任何困难。3、连接成功,在里面我们可以看到我们前面章节所创建的表,这样子就可以在里面操作我们的sql语句的。5、连接成功,在里面我们可以看到我们前面章节所创建的表,这样子就可以在里面操作我们的sql语句的。

java lambda无法使用_java – 为什么不允许lambda函数?-程序员宅基地

文章浏览阅读1.2k次。我一直在Vaadin的GUI中工作,有一些来自我的IT主管的课程.这一切都很棒,但是,今天,我遇到过我不能在addListener方法类型中使用lambda表达式.此方法是自定义的,作为使用它的对象.这是实施:public class ResetButtonForTextField extends AbstractExtension {private final List listeners= n..._java: -source 1.5 中不支持 lambda 表达式

W的图像处理之圆检测(3)一圆形标记点精定位算法_圆形黑白块标记点识别-程序员宅基地

文章浏览阅读1.9k次,点赞2次,收藏4次。圆形标记点精定位算法:标记点精定位模块采用边缘特征拟合的方法。首先进行边缘检测,然后提取标记点边缘像素,最后采用最小二乘拟合法,得到标记点的圆心的精确坐标..._圆形黑白块标记点识别

起重机械PLC自动化控制系统_起重机plc控制系统-程序员宅基地

文章浏览阅读75次。模型库和底层数据的感知共同构成了调度情境,通过对生产任务和调度情境的匹配和知识推理,形成相应的调度方案,并由此得到需要调用的资源,算法库依次生成对应的指令代码和调度方案,来驱动设备的运行。在设备实时运行的过程中,由反馈设备接收相应的反馈数据,并与仿真结果进行交互。如图2所示,无人天车传感器除了包含传统天车的舱门开关、大车限位、小车限位、主钩重锤开关、主钩急停开关等传感器外,还包括大车X轴位置传感器、小车Y轴传感器、主钩高度Z轴传感器、主钩称重传感器、天车间防撞传感器、摆角检测传感器等特殊功能的传感器。_起重机plc控制系统

【C语言复习(二)】struct 与 union 的分析_c语言中的struct和union关键字都是什么含义,寄存器结构体的参考实现为什么把部分s-程序员宅基地

文章浏览阅读1.2k次。C语言中,struct 与 union 关键字都是用来定义用户自己的数据类型,struct用来定义结构体,union用来定义共用体;一个结构体所占用的内存空间等于它的成员所占空间的总和;一个共用体所占内存空间等于它的成员中占用空间最大的成员所占的空间大小,同一时刻,只能有一个成员出于有效状态! 1、struct(1)、思考:一个空的结构体,占用多大内存空间??如下示例:#inc_c语言中的struct和union关键字都是什么含义,寄存器结构体的参考实现为什么把部分s

随便推点

自己搭建 Linux 服务器踩坑记录_建立服务器踩过的坑-程序员宅基地

文章浏览阅读149次。前言妈蛋,自己搭建一个Linux服务器居然能遇到这么多坑。特此整理下,方便下次遇到同样的错误时能够回过头来快速定位问题并解决问题Number 1,服务器重启之后,Xshell 连接不上注:在服务器重启之前,我只安装了 jdk ,配置了 /etc/profile 环境变量,我一直以为是这个原因,后面把jdk 配置注释掉也没用正确的方向应该是先查看 ssh 服务有没有启动键入命令systemctl status sshd.service如果你的显示跟红框一样 【dead..._建立服务器踩过的坑

MT4606-VB_MOSFET产品应用与参数解析-程序员宅基地

文章浏览阅读187次。通过控制20Vgs (±V)的门源电压,可以实现开关管的导通和截止,实现对电流的控制和开关状态的转换。MT4606详细参数说明 - 极性 N+P沟道- 额定电压 ±30V- 额定电流 9A (N沟道), -6A (P沟道)- 导通电阻 15mΩ @ 10V (N沟道), 42mΩ @ 10V (P沟道), 19mΩ @ 4.5V (N沟道), 50mΩ @ 4.5V (P沟道)- 门源电压 20Vgs (±V)- 阈值电压 ±1.65Vth (V)- 封装类型 SOP8。_mt4606

达梦启云平台中,部署使用HIVE笔记_达梦sql中hiveing-程序员宅基地

文章浏览阅读637次。启云平台部署hive_达梦sql中hiveing

算法-前缀和与差分-程序员宅基地

文章浏览阅读606次,点赞27次,收藏14次。那么就可以把 preSum 的公式统一为,此时的 preSum[i] 表示 nums 中 iii 元素左边所有元素之和(不包含当前元素 iii)。​下面以 [1, 12, -5, -6, 50, 3] 为例,用动图讲解一下如何求 preSum。

POJ2018 Best Cow Fences-程序员宅基地

文章浏览阅读74次。我对二分的理解:https://www.cnblogs.com/AKMer/p/9737477.html题目传送门:http://poj.org/problem?id=2018我们二分一个平均数,设\(a\)数组每个数减去平均数为\(b\)数组,若\(b\)数组当中存在某一段长度大于\(k\)并且这一段权值和大于\(0\),那么说明最终平均值肯定大于我们当前二分的平均值。那么怎么求..._poj 2018 best cow fences

nginx 504 proxy_read_timeout_proxy_read_timeout 504-程序员宅基地

文章浏览阅读3.7k次。nginx中proxy_read_timeout的值调的比较小,会出现504_proxy_read_timeout 504