洛谷——P1103 书本整理

https://www.luogu.org/problem/show?pid=1103

题目描述

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本中,一定有第i本,且已经选了j本、则f[i][j]=min{ f[t][j-1]+abs(w[i]-w[t] }
 1 #include <algorithm>
 2 #include <cstdlib>
 3 #include <cstdio>
 4
 5 #define min(a,b) (a<b?a:b)
 6 inline void read(int &x)
 7 {
 8     x=0; register char ch=getchar();
 9     for(; ch>‘9‘||ch<‘0‘; ) ch=getchar();
10     for(; ch>=‘0‘&&ch<=‘9‘; ch=getchar()) x=x*10+ch-‘0‘;
11 }
12 const int N(110);
13 int n,k,f[N][N];
14 struct Node {
15     int h,w;
16     bool operator < (const Node x) const
17     {
18         return h<x.h;
19     }
20 }book[N];
21
22 int Presist()
23 {
24     read(n),read(k);k=n-k;
25     for(int i=1; i<=n; ++i)
26         read(book[i].h),read(book[i].w);
27     std::sort(book+1,book+n+1);
28     int ans=0x3f3f3f3f;
29     for(int i=2; i<=n; ++i)
30     {
31       for(int j=2; j<=min(i,k); ++j)
32       {
33         f[i][j]=0x3f3f3f3f;
34           for(int t=j-1; t<i; ++t)
35             f[i][j]=min(f[i][j],f[t][j-1]+abs(book[i].w-book[t].w));
36       }
37       if(i>=k) ans=min(ans,f[i][k]);
38     }
39     printf("%d\n",ans);
40     return 0;
41 }
42
43 int Aptal=Presist();
44 int main(){;}
时间: 2024-08-02 19:38:44

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

洛谷 P1103 书本整理(动规)

洛谷 P1103 书本整理 题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的书,所以Frank首先将书按高度顺序排列在书架上.但是Frank发现,由于很多书的宽度不同,所以书看起来还是非常不整齐.于是他决定从中拿掉k本书,使得书架可以看起来整齐一点. 书架的不整齐度是这样定义的:每两本书宽度的差的绝对值的和.例如有4本书: 1x2 5x3 2x4 3x1 那么Frank将其排列整齐后是: 1x2 2x4 3x1 5x3 不整齐度就是2+3

动态规划 洛谷P1103 书本整理

P1103 书本整理 题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的书,所以Frank首先将书按高度顺序排列在书架上.但是Frank发现,由于很多书的宽度不同,所以书看起来还是非常不整齐.于是他决定从中拿掉k本书,使得书架可以看起来整齐一点. 书架的不整齐度是这样定义的:每两本书宽度的差的绝对值的和.例如有4本书: 1x2 5x3 2x4 3x1 那么Frank将其排列整齐后是: 1x2 2x4 3x1 5x3 不整齐度就是2+3+2=

洛谷P1103 书本整理

题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的 书,所以Frank首先将书按高度顺序排列在书架上.但是Frank发现,由于很多书的宽度不同,所以书看起来还是非常不整齐.于是他决定从中拿掉k本 书,使得书架可以看起来整齐一点. 书架的不整齐度是这样定义的:每两本书宽度的差的绝对值的和.例如有4本书: 1x2 5x3 2x4 3x1 那么Frank将其排列整齐后是: 1x2 2x4 3x1 5x3 不整齐度就是2+3+2=7 已知每本书的高

洛谷1103 书本整理

洛谷1103 书本整理 本题地址:http://www.luogu.org/problem/show?pid=1103 题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的书,所以Frank首先将书按高度顺序排列在书架 上.但是Frank发现,由于很多书的宽度不同,所以书看起来还是非常不整齐.于是他决定从中拿掉k本书,使得书架可以看起来整齐一点. 书架的不整齐度是这样定义的:每两本书宽度的差的绝对值的和.例如有4本书: 1x2 5x3 2x4

P1103 书本整理

P1103 书本整理 题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的书,所以Frank首先将书按高度顺序排列在书架上.但是Frank发现,由于很多书的宽度不同,所以书看起来还是非常不整齐.于是他决定从中拿掉k本书,使得书架可以看起来整齐一点. 书架的不整齐度是这样定义的:每两本书宽度的差的绝对值的和.例如有4本书: 1x2 5x3 2x4 3x1 那么Frank将其排列整齐后是: 1x2 2x4 3x1 5x3 不整齐度就是2+3+2=

洛谷_递归整理

P1427  小鱼的数字游戏 题目描述 小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以0结束,最多不超过100个,数字不超过2^32-1),记住了然后反着念出来(表示结束的数字0就不要念出来了).这对小鱼的那点记忆力来说实在是太难了,你也不想想小鱼的整个脑袋才多大,其中一部分还是好吃的肉!所以请你帮小鱼编程解决这个问题. 输入输出格式 输入格式: 一行内输入一串整数,以0结束,以空格间隔. 输出格式: 一行内倒着输出这一串整数,以空格间隔. 输入输出样例 输入样例#1:

【Luogu】P1103 书本整理の心得

传送门qwq 卡了好长时间,结果发现是一道普及的题,啪啪啪啪啪..... 虽然dp方程不难想,但是思路还是很重要的,**转化题意**是最重要的一步,例如,抽调k本书,可以转化为在n本书里选择n-k本书,而不是去写sb的3维区间dp,而且根本不可写23333,另外,dp得到的dp[n][n-k]不一定就是答案,要注意到,并不一定最后一本选的书是第n本,所以一定要把dp数组扫一下,再得出最优解!! dp[i][j]表示在最后一本书为i时,一共选了j本书的最小值. dp[i][j]=min(dp[i]

Luogu P1103 书本整理

题目链接 题目大意:有n个二元组,先按第一关键字排序,定义价值为每相邻两个元素第二关键字差的绝对值和.现在去掉k个二元组,请你求出最小的价值. 第一关键字至于排序有关,排完序后完全可以不要. 与其考虑去掉k个二元组,不如保留n-k个二元组. 设f[i][j]为前i个二元组保留j个的最小代价(必须含i),则前i-1个二元组中保留j-1个,枚举转移点t,得到状态转移方程: f[i][j]=min{f[t][j-1]}(j-1≤t<i) 初始化:f[i][1]=0 答案min{f[i][k]}(k≤i

【日常学习】【数学-其他】洛谷1403 约数研究题解

于是又要迎来洛谷那凌然无言以对的题目摘要= = 洛谷1403 约数研究 本题地址:http://www.luogu.org/problem/show?pid=1403 题目描述 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机"Samuel2"的长时间运算成为了可能.由于在去年一年的辛苦工作取得了不错的成绩,小联允许用"Samuel2"进行数学研究. 小联最近在研究和约数有关的问题,他统计每个正数N的约数的个数,并以f(N)来表示.现