题目描述

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:

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

  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=;
  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=;i<=n;i++){
  21. scanf("%d%d",&a[i].h,&a[i].w);
  22. }
  23. k=n-k;
  24. sort(a+,a+n+,cmp);
  25. for(i=;i<=n;i++){
  26. for(j=;j<=min(i,k);j++){//只取一本的话不整齐度为0,故从2开始
  27. f[i][j]=;
  28. for(int m=j-;m<i;m++){//枚举上一次取的书的位置
  29. f[i][j]=min(f[i][j],f[m][j-]+abs(a[i].w-a[m].w));;
  30. }
  31. }
  32. }
  33. int ans=;
  34. for(i=k;i<=n;i++){
  35. ans=min(ans,f[i][k]);
  36. }
  37. cout<<ans;
  38. return ;
  39. }

洛谷P1103 书本整理的更多相关文章

  1. 洛谷 P1103 书本整理(动规)

    洛谷 P1103 书本整理 题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的书,所以Frank首先将书按高度顺序排列在书架上.但是Frank发 ...

  2. Java实现 洛谷 P1103 书本整理

    题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的书,所以Frank首先将书按高度顺序排列在书架上.但是Frank发现,由于很多书的宽度不同,所 ...

  3. 洛谷——P1103 书本整理

    https://www.luogu.org/problem/show?pid=1103 题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的书,所 ...

  4. P1103 书本整理

    P1103 书本整理 题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的书,所以Frank首先将书按高度顺序排列在书架上.但是Frank发现,由 ...

  5. dp P1103 书本整理 洛谷

    题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的书,所以Frank首先将书按高度顺序排列在书架上.但是Frank发现,由于很多书的宽度不同,所 ...

  6. luogu P1103 书本整理

    题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的书,所以Frank首先将书按高度顺序排列在书架上.但是Frank发现,由于很多书的宽度不同,所 ...

  7. 【洛谷P1352】没有上司的舞会

    [洛谷P1352]没有上司的舞会 x舷售 锚」翅θ 但是 拙臃 蓄ⅶ榔 暄条熨卫 翘ヴ馇 表现无愧于雪月工作室的核心管理 爸惚扎掬 颇瓶 芟缆肝 貌痉了 洵┭笫装 嗝◇裴腋 褓劂埭 ...

  8. 洛谷 P1226 【模板】快速幂||取余运算

    题目链接 https://www.luogu.org/problemnew/show/P1226 题目描述 输入b,p,k的值,求b^p mod k的值.其中b,p,k*k为长整型数. 输入输出格式 ...

  9. Lightning Conductor 洛谷P3515 决策单调性优化DP

    遇见的第一道决策单调性优化DP,虽然看了题解,但是新技能√,很开森. 先%FlashHu大佬,反正我是看了他的题解和精美的配图才明白的,%%%巨佬. 废话不多说,看题: 题目大意 已知一个长度为n的序 ...

随机推荐

  1. (78)zabbix值缓存(value cache)说明

    在zabbix-2.2版本之前,zabbix计算trigger与calculated/aggregate值都是直接通过sql语句查询并处理出来的结果,为了提高这块的性能与效率,zabbix引入了val ...

  2. gitlab文件夹的权限不要随便给777

    gitlab  权限给到777   不一定有用

  3. 第11课 文章分类(组件化开发) Thinkphp5商城第四季

    目录 思路: 控制器里 扩展类里: 视图层: 思路: 控制器查出所有数据后调用扩展类里的无限级分类 public function catetree($cateRes) 方法. 把排序好的数据传给视图 ...

  4. TI C64X+通用库函数使用手册

    在使用前,当知悉以下几点: 函数进程由手动汇编而成,已充分发挥器件效率.同时TI对外提供C和线性汇编代码 对于个人一些特殊应用,DSPLIB可能会带来额外的cycle消耗 TI DSPLIB依平台和时 ...

  5. 7、python中的字典

    字典是python内置的一种无序.可变的数据结构. 字典也叫哈希表.什么是哈希表?哈希表就是会对表中的键(key)执行哈希计算,并根据计算结果在内存中分配一个区域来储存该键所对应的值(value).这 ...

  6. JQ剪辑图片插件,适用于移动端和PC端

    主要用到以下JS文件: <script src="js/photo/iscroll-zoom.js"></script> <script src=&q ...

  7. 第八届蓝桥杯C/C++ B组省赛----分巧克力

    分巧克力 问题描述 儿童节那天有K位小朋友到小明家做客.小明拿出了珍藏的巧克力招待小朋友们. 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形. 为了公平起见,小明需要从这 N 块巧 ...

  8. Django权限管理系统设计分析

    权限管理顾名思义,其实就是角色控制权限的系统,每个用户对应一个角色,每个角色有对应的权限,比如公司会有CEO,总监,销售经理,销售员,每个人的权限都不一样,那我们给他展示的url也都不同 一.首先创建 ...

  9. NGUI 学习总结

    NGUI 学习一段时间了,这里总结一下,用于以后查看. 获取组件 在Awake函数里获取组件,然后就可在Start以及其他函数里使用 lbl = GetComponent<UILabel> ...

  10. Map-Reduce基础

    1.设置文件读入分隔符 默认按行读入; 按句子读入 : conf1.set("textinputformat.record.delimiter", "."); ...