【问题描述】

小明的书架上放了许多书,为了使书架变得整洁,小明决定整理书架,他将所有书按高度大小排列,这样排了之后虽然整齐了许多,但小明发现,书本的宽度不同,导致书架看上去还是有些凌乱。小明把这个凌乱值定义为相邻两本书的宽度差的绝对值的和。

例如有4本书:

1×2

5×3

2×4

3×1

那么小明将其排列整齐后的顺序是:

1×2

2×4

3×1

5×3

凌乱值就是2+3+2=7

于是小明决定拿掉其中的k本书,使凌乱值最小,你能帮他求出这个最小值吗?已知每本书的高度都不一样。

【问题输入】

第一行两个数字n和k,代表书总共有n本,要求从中去掉k本。\((l\le n \le 100, 1\le k \le n)\)。下面的n行,每行两个数字表示一本书的高度和宽度,它们均小于200。

【问题输出】

一行一个整数,表示书架的最小凌乱值。

【样例输入】

4 1

1 2

2 4

3 1

5 3

【样例输出】

3

【数据范围】

30%的数据,n≤20。

100%的数据,n≤l00,k<n。

题解

JYT:这是一道简单的动态规划题……

记录去掉\(k\)本比较麻烦,那就记录留下\(n-k\)本吧……

设\(dp[i][j]\)表示到第\(i\)本且必须保留\(i\),保留了\(j\)本的方案数。

容易得到转移方程:

\(dp[i][kk+1] = \min(dp[i][kk+1], dp[j][kk] + abs(book[i].kuan - book[j].kuan))\)

book[i].kuan表示第\(i\)本书的宽度。

代码如下:

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm> using namespace std; #define fill(a) memset(a, 0x3f, sizeof(a)) const int maxn = 105; int dp[maxn][maxn]; struct BOOK
{
int quan, h, kuan; inline bool operator < (const BOOK& other) const
{
return h < other.h;
}
} book[maxn]; const int inf = 0x3f3f3f3f; int main()
{
freopen("book.in", "r", stdin);
freopen("book.out", "w", stdout);
int n, k;
scanf("%d%d", &n, &k);
for(int i = 1; i <= n; ++i)
scanf("%d%d", &book[i].h, &book[i].kuan);
k = n-k;
sort(book+1, book+1+n);
fill(dp);
for(int i = 1; i <= n; ++i)
dp[i][1] = 0;
for(int i = 2; i <= n; ++i)
for(int j = 1; j < i; ++j)
for(int kk = 1; kk < k; ++kk)
dp[i][kk+1] = min(dp[i][kk+1], dp[j][kk] + abs(book[i].kuan - book[j].kuan));
int ans = inf;
for(int i = 1; i <= n; ++i)
ans = min(ans, dp[i][k]);
printf("%d", ans);
return 0;
}

20180610模拟赛T3——书本整理的更多相关文章

  1. 体育成绩统计——20180801模拟赛T3

    体育成绩统计 / Score 题目描述 正所谓“无体育,不清华”.为了更好地督促同学们进行体育锻炼,更加科学地对同学们进行评价,五道口体校的老师们在体育成绩的考核上可谓是煞费苦心.然而每到学期期末时, ...

  2. 20180610模拟赛T1——脱离地牢

    Description 在一个神秘的国度里,年轻的王子Paris与美丽的公主Helen在一起过着幸福的生活.他们都随身带有一块带磁性的阴阳魔法石,身居地狱的魔王Satan早就想着得到这两块石头了,只要 ...

  3. 20180520模拟赛T3——chess

    [问题描述] 小美很喜欢下象棋. 而且她特别喜欢象棋中的马. 她觉得马的跳跃方式很独特.(以日字格的方式跳跃) 小芳给了小美一张很大的棋盘,这个棋盘是一个无穷的笛卡尔坐标. 一开始\(time=0\) ...

  4. 2016.10.30 NOIP模拟赛 day2 PM 整理

    满分:300分 直接全部爆零,真的是很坑啊! 10.30的题目+数据:链接:http://pan.baidu.com/s/1jHXLace 密码:i784 T1: 题目中的难点就是每次折叠的点可能应经 ...

  5. 2016.10.30 NOIP模拟赛 day2 AM 整理

    题目+数据:链接:http://pan.baidu.com/s/1gfBg4h1 密码:ho7o 总共得了:130分, 1:100分  2:30分(只会这30分的暴力) 3:0(毫无思路) 虽然不高, ...

  6. 2016.10.29 NOIP模拟赛 PM 考试整理

    300分的题,只得了第三题的100分. 题目+数据:链接:http://pan.baidu.com/s/1o7P4YXs 密码:4how T1:这道题目存在着诸多的问题: 1.开始的序列是无法消除的( ...

  7. 20161005 NOIP 模拟赛 T3 解题报告

    subset 3.1 题目描述 一开始你有一个空集,集合可以出现重复元素,然后有 Q 个操作 1. add s 在集合中加入数字 s. 2. del s 在集合中删除数字 s.保证 s 存在 3. c ...

  8. ztz11的noip模拟赛T3:评分系统

    代码: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...

  9. 2019.10.02模拟赛T3

    题目大意: 设$S(n,m)$为第二类斯特林数,$F_i$表示斐波那契数列第$i$项. 给定$n,R,K$,求$\sum\limits_{i=1}^{n}(\sum\limits_{m=1}^{R}F ...

随机推荐

  1. Sentinel Client: 整合Apollo规则持久化

    在前面的学习过程中,Sentinel 的规则,也就是我们之前定义的限流规则,是通过代码的方式定义好的.这是初始化时需要做的事情,Sentinel 提供了基于API的方式修改规则: FlowRuleMa ...

  2. 你还在为了JVM而烦恼么?(内存结构和垃圾回收算法)

    ​ 做JAVA也有接近2年的时间了,公司的leader说,做JAVA,三年是个坎,如果过了三年你还没有去研究JVM的话,那么你这个程序员只能是板砖的工具了.恰逢辞职,来个JVM的解析可好? JVM是J ...

  3. SQL ------------ avg() 与 sum 函数

    AVG() 函数返回数字列的平均值 注意是数字的平均数, 语法: select avg(字段) from 表名 建个表,弄点数据 使用 select avg(字段) as 平均数 from 表名 与w ...

  4. https的原理入门

    现在基本上互联网上访问的地址都是使用HTTPS协议了,只有局域网才会使用HTTP协议,因此了解HTTPS十分重要. HTTP存在的问题 上过网的朋友都知道,网络是非常不安全的.尤其是公共场所有很多免费 ...

  5. RESTful API 最佳实践(转)

    原文:http://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html 阮一峰老师的文章,他的文章把难懂的东西讲的易懂 RE ...

  6. ioc与bean管理

    IOC称之为控制反转,简单来说就是将对象的创建的权利和对象的声明周期的管理过程交给Spring框架来处理,在这个开发过程中不再需要关注对象的创建和生命周期的管理,而是在需要的时由Spring框架提供, ...

  7. Windows git和cmd代理设置

    linux的比较简单,直接修改配置文件即可,这里就不再赘述 设置Git代理 http代理: 临时代理: export http_proxy=http://127.0.0.1:7777 export h ...

  8. (二)RFB协议具体通信说明

    .   消息说明  8.1     握手消息 8.1.1       RFB协议版本号 1.vnc服务器发送所能够支持的最高RFB协议版本号给客户端,格式如下: “RFB xxx.yyy\n”共12b ...

  9. Python学习笔记之测试函数

    11-1 城市和国家:编写一个函数,它接受两个形参:一个城市名和一个国家名.这个函数返回一个格式为City, Country 的字符串,如Santiago, Chile.将这个函数存储在一个名为cit ...

  10. 基于vue+springboot+docker网站搭建【六】安装中间件

    安装中间件 去另外一台2核4G的机器先安装docker,然后安装后台项目使用的中间件 一.mysql 下载镜像:docker pull mysql:5.7 启动镜像实例:docker run -p 3 ...