洛谷 P1103 书本整理
来源:互联网 发布:编程原本 看不懂 编辑:程序博客网 时间:2024/04/27 15:53
题目描述
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 11 22 43 15 3
输出样例#1:
3
是子矩阵那个题的弱化版。
#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int N=105;int n,k,ans=1e9+7,f[N][N];//选了i本书,最后一本是j的最小不整齐度。 struct book{int x,y;}a[N];bool cmp(book c,book d){return c.x<d.x;}int main(){scanf("%d%d",&n,&k);for(int i=1;i<=n;i++)scanf("%d%d",&a[i].x,&a[i].y);sort(a+1,a+n+1,cmp);memset(f,0x3f,sizeof(f));for(int i=1;i<=n;i++)f[1][i]=0;for(int i=2;i<=n-k;i++)for(int j=i;j<=n;j++)for(int g=1;g<=j-1;g++)f[i][j]=min(f[i][j],f[i-1][g]+abs(a[j].y-a[g].y));for(int i=n-k;i<=n;i++)ans=min(ans,f[n-k][i]);printf("%d\n",ans);return 0;}
1 0
- 洛谷P1103 书本整理
- 洛谷 P1103 书本整理
- 洛谷 P1103 书本整理
- 书本整理 洛谷p1103
- P1103 书本整理(洛谷)
- 动态规划 洛谷P1103 书本整理
- P1103 书本整理 【dp】
- 洛谷1103 书本整理
- 书本整理
- 书本整理
- 书本整理
- 书本整理
- luogu1103书本整理
- SSL2081 书本整理(dp)
- 【SSLGZ 2081】书本整理
- 动态规划---书本整理
- P1103
- P1103
- C++有关编译器的笔记
- Java 数组排序
- av_sample_get_buffer_size
- Linux环境变量的设置和查看方法
- IOS之UIViewController执行返回操作并传递参数值的两种方式
- 洛谷 P1103 书本整理
- 总结40
- Linux中二进制/ 源码包软件的安装 rpm
- Cucumber+Selenide指导手册
- WebService
- Java反射机制详解
- 函数的特性
- caffe code 理解之 blob.hpp + blob.cpp
- String与StringBuffer的区别