zoukankan      html  css  js  c++  java
  • 洛谷P1103 书本整理

    题目描述

    Frank是一个非常喜爱整洁的人。他有一大堆书和一个书架,想要把书放在书架上。书架可以放下所有的 书,所以Frank首先将书按高度顺序排列在书架上。但是Frank发现,由于很多书的宽度不同,所以书看起来还是非常不整齐。于是他决定从中拿掉k本 书,使得书架可以看起来整齐一点。

    书架的不整齐度是这样定义的:每两本书宽度的差的绝对值的和。例如有4本书:

    1x2 5x3 2x4 3x1 那么Frank将其排列整齐后是:

    1x2 2x4 3x1 5x3 不整齐度就是2+3+2=7

    已知每本书的高度都不一样,请你求出去掉k本书后的最小的不整齐度。

    输入输出格式

    输入格式:

    第一行两个数字n和k,代表书有几本,从中去掉几本。(1<=n<=100, 1<=k<n)

    下面的n行,每行两个数字表示一本书的高度和宽度,均小于200。

    保证高度不重复

    输出格式:

    一行一个整数,表示书架的最小不整齐度。

    输入输出样例

    输入样例#1:
    4 1
    1 2
    2 4
    3 1
    5 3
    
    输出样例#1:
    3

    转换思路,去掉k本书的最优解,相当于保留n-k本书的最优解。

    动规解决,设f[i][j]表示前i本书中取了j本书的最优解。

     1 /**/
     2 #include<iostream>
     3 #include<cstdio>
     4 #include<cmath>
     5 #include<cstring>
     6 #include<algorithm>
     7 using namespace std;
     8 const int mxn=200;
     9 struct book{
    10     int w,h;
    11 }a[mxn];
    12 int cmp(const book a,const book b){
    13     return a.h<b.h;
    14 }
    15 int f[mxn][mxn];
    16 int n,k;
    17 int main(){
    18     scanf("%d%d",&n,&k);
    19     int i,j;
    20     for(i=1;i<=n;i++){
    21         scanf("%d%d",&a[i].h,&a[i].w);
    22     }
    23     k=n-k;
    24     sort(a+1,a+n+1,cmp);
    25     for(i=1;i<=n;i++){
    26         for(j=2;j<=min(i,k);j++){//只取一本的话不整齐度为0,故从2开始 
    27             f[i][j]=100000;
    28             for(int m=j-1;m<i;m++){//枚举上一次取的书的位置 
    29                 f[i][j]=min(f[i][j],f[m][j-1]+abs(a[i].w-a[m].w));;
    30             }
    31         }
    32     }
    33     int ans=100000;
    34     for(i=k;i<=n;i++){
    35         ans=min(ans,f[i][k]);
    36     }
    37     cout<<ans;
    38     return 0;
    39 }
  • 相关阅读:
    how to uninstall devkit
    asp.net中bin目录下的 dll.refresh文件
    查找2个分支的共同父节点
    Three ways to do WCF instance management
    WCF Concurrency (Single, Multiple, and Reentrant) and Throttling
    检查string是否为double
    How to hide TabPage from TabControl
    获取当前系统中的时区
    git svn cygwin_exception
    lodoop打印控制具体解释
  • 原文地址:https://www.cnblogs.com/SilverNebula/p/5726961.html
Copyright © 2011-2022 走看看