当前位置: 首页 > news >正文

HDU-1421

/*
a<b<c<d
容易证明:(a-b)^2+(c-d)^2 < (a-c)^2+(b-d)^2
即此题可以先排序,然后相邻的两个平方差最小

dp[i][j]表示i件物品选取j对 的最小疲劳度,w[i]表示第i件物品的重量
方程为:
    i==j*2
        dp[i][j] = dp[i-2][j-1]+(w[i]-w[i-1])*(w[i]-w[i-1]);
    i>j*2
        dp[i][j] = min(dp[i-1][j],dp[i-2][j-1]+(w[i]-w[i-1])*(w[i]-w[i-1]));

2 1
1 3


4
*/
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
int dp[2005][1005];
 int w[2005];
using namespace std;
int main()
{
    int n,k;
    while(scanf("%d %d",&n,&k)!=EOF)
    {
        for(int i=1;i<=n;i++)
            scanf("%d",&w[i]);
        w[0] = 0;
        sort(w+1,w+n+1);
        for(int i=0;i<2005;i++)
        {
             dp[i][0] = 0;
        }
        for(int j=0;j<1005;j++)
        {
            dp[0][j] = 0;
            dp[1][j] = 0;
        }
        for(int i=2;i<=n;i++)
            for(int j=1;2*j<=i;j++)
        {
           if(i==j*2)
                dp[i][j] = dp[i-2][j-1]+(w[i]-w[i-1])*(w[i]-w[i-1]);
            else if(i>j*2)
                dp[i][j] = min(dp[i-1][j],dp[i-2][j-1]+(w[i]-w[i-1])*(w[i]-w[i-1]));
        }
        printf("%d\n",dp[n][k]);
    }
}

 

转载于:https://www.cnblogs.com/xibaohe/archive/2013/04/12/3017000.html

相关文章:

  • 2251. [2010Beijing Wc]外星联络【后缀数组】
  • Tortoisesvn,鼠标右键菜单中找不到“检出”的处理方法
  • 麻烦大家反馈一下昨天的网站访问速度
  • 网关 Spring-Cloud-Gateway 源码解析 —— 网关初始化
  • shell中quotes的不同作用
  • C/C++入门必备
  • SqlServer在表中插入数据时出现主键冲突问题解决方式
  • 1、告别windows,决定
  • 深入浅出Power Shell——cmd调用PowerShell脚本
  • 专访黄隽实:Stay hungry, Stay foolish!
  • golang中应该怎么使用socket?
  • 第十一课 xshell实现linux与windows互文件、用户与密码的配置文件、用户和用户组的管理...
  • ubuntu12.04+ssh远程登录
  • 生活在这个世界当中,就要学会去接受去应用,去感受。。。。。
  • JavaWeb(学习笔记二)
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • Apache Pulsar 2.1 重磅发布
  • Babel配置的不完全指南
  • bootstrap创建登录注册页面
  • gitlab-ci配置详解(一)
  • Java深入 - 深入理解Java集合
  • Python进阶细节
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 猴子数据域名防封接口降低小说被封的风险
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 软件开发学习的5大技巧,你知道吗?
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 一天一个设计模式之JS实现——适配器模式
  • 用mpvue开发微信小程序
  • 《天龙八部3D》Unity技术方案揭秘
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​Python 3 新特性:类型注解
  • ​什么是bug?bug的源头在哪里?
  • ​业务双活的数据切换思路设计(下)
  • #includecmath
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (27)4.8 习题课
  • (3)llvm ir转换过程
  • (3)选择元素——(17)练习(Exercises)
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)Linux下编译安装log4cxx
  • (转)scrum常见工具列表
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET 解决重复提交问题
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NET的数据绑定
  • .project文件
  • [20171101]rman to destination.txt