zoukankan      html  css  js  c++  java
  • hdu 1421 搬寝室

    搬寝室是很累的,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

    // 思想类似于HDU 1024 Max Sum Plus Plus

    //这题的空间也可以像那题一样压缩!

    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    bool
    cmp(int a,int b)
    {

       return
    a<b;
    }

    int
    a[2003];
    int
    dp[2001][1001];
    int
    main()
    {

         int
    n,k,i,j,sum;
         while
    (scanf("%d%d",&n,&k)!=EOF)
         {

             for
    (i=1;i<=n;i++)
                 scanf("%d",&a[i]);
             sort(a+1,a+n+1,cmp);
             //for(i=1;i<=n;i++)
            //     printf("%d ",a[i]);
             for(i=1;i<n;i++)
               a[i]=(a[i+1]-a[i])*(a[i+1]-a[i]);

             dp[2][1]=a[1];

             for
    (i=3;i<=n;i++)
                 dp[i][1]=dp[i-1][1]<a[i-1]?dp[i-1][1]:a[i-1];
            
             for
    (j=2;j<=k;j++)
             {

                  sum=0;
               for
    (i=1;i<2*j;i+=2)
                   sum+=a[i];
               dp[j*2][j]=sum;
                  sum=j*2;
               for
    (i=sum+1;i<=n;i++)
                 dp[i][j]=dp[i-2][j-1]+a[i-1]<dp[i-1][j]?dp[i-2][j-1]+a[i-1]:dp[i-1][j];
             }

            printf("%d\n",dp[n][k]);
         }

         return
    0;
    }

  • 相关阅读:
    不同版本strtotime("2016-09-04")输出不同问题
    Jquery,YUI这个著名js库名称作用的理解
    函数和方法
    js的关联数组
    windows信息
    改centos7的网卡名
    GIT命令
    安装时遇到:正在尝试其它镜像。 http://mirrors.btte.net/centos/7.2.1511/extras/x86_64/repodata/repomd.xml: [Errno 14] curl#6
    本地怎样访问虚拟机上的服务器
    yolo
  • 原文地址:https://www.cnblogs.com/372465774y/p/2442885.html
Copyright © 2011-2022 走看看