• HDU 1421 搬寝室


    搬寝室

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

    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
     
    Author
    xhd
     
    Source
     
    Recommend
    lcy
     
    思路:简单的DP
     
    代码:
    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    int
    dp[2001][2001];
    int
    a[2001];
    int
    min(int a,int b)
    {

        if
    (a>b)
           return
    b;
        return
    a;
    }

    int
    getdp(int i,int j)
    {

        if
    (j==0)
           return
    0;
        if
    (j*2>i)
           return
    1000000000;
        else
           return
    dp[i][j];
    }

    int
    main()
    {

        int
    i,j,temp;
        int
    n,k;
        while
    (~scanf("%d%d",&n,&k))
        {

            memset(dp,0,sizeof(dp));
            for
    (i=1;i<=n;i++)
              scanf("%d",&a[i]);
            sort(a+1,a+n+1);
            for
    (j=1;j<=k;++j)
                for
    (i=j*2;i<=n;++i){
                   dp[i][j]=min(getdp(i-1,j),(getdp(i-2,j-1)+(a[i]-a[i-1])*(a[i]-a[i-1])));}
          printf("%d ",dp[n][k]);
        }
    }
  • 相关阅读:
    3.4 抓取猫眼电影排行
    2.5 代理的基本原理
    第二章 爬虫基础
    1.8 爬虫框架的安装
    Python序列化
    CVE-2020-1938 Apache-Tomcat-Ajp漏洞复现
    Python定制类
    Apache Tomcat DDOS
    内网端口转发工具
    内网渗透思路简单介绍
  • 原文地址:https://www.cnblogs.com/GODLIKEING/p/3290625.html
Copyright © 2020-2023  润新知