P1103 书本整理 题解

这是一个关于优化书本排列的问题,目标是按x排序后,去掉k个二元组,使相邻二元组y差的绝对值之和最小。通过建立book结构体进行排序,并使用动态规划求解,时间复杂度为O(n^3),在原题中获得满分。
摘要由CSDN通过智能技术生成

博客园同步

原题链接

简要题意:

给定 n n n 个二元组 { x , y } \{x,y\} { x,y},你的任务首先要将它们按照 x x x 排序(保证 x x x 两两不同),然后从中去掉 k k k 个二元组,使得 剩下的每相邻二元组 y y y 的差的绝对值之和最小,求这个最小值。

n ≤ 100 , x , y ≤ 200 n \leq 100 , x,y \leq 200 n100,x,y200.

原题中书的高度即为 x x x,书的宽度即为 y y y.

首先我们建立结构体 book {height , width} \text{book \{height , width\}} book {height , width} 来存储每一本书的情况,便于排序操作。其次我们考虑,类似 n  choose  k n \space \text{choose} \space k n choose k 的做法,数据范围很弱,考虑用 动态规划 做。

考虑反其道而行之,去掉 k k k 个也就是反选 n − k n-k nk 个,换成了熟悉的形式。用 f

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值