Bookshelf题解动态规划DP

单调栈+线段树优化DP:洛谷P5095 Bookshelf S题解 动态规划是解决序列划分问题的经典思想,但O(N^2)的朴素转移往往无法应对十万级数据。当转移方程包含区间最大值等复杂代价时,通常需要借助数据结构进行优化。本文从基础DP建模出发,详细拆解洛谷P5095 [USACO12OPEN] Bookshelf S一题。通过双指针预处理合法区间,用单调栈压缩高度变化的连续分段点,并利用线段树动态维护候选最小值,最终将复杂度优化至O(N log N)。该解法融合了三种经典技巧,是算法竞赛与信奥训练中极具代表性的数据结构优化DP案例。 阅读详情

Description

Robby bought a new bookshelf, and he wanted to put all his N books on it. The bookshelf contains K layers, and the heights of each layer are variable. That is, the minimum height of one layer is equal to the maximum height of all the books in this layer. And the height of the bookshelf is the sum of all layers' heights. Now Robby wants to make the height of his bookshelf as low as possible, but he don't want to break the order of the books, that is, each layer must contain the consecutive books of the original book series. And each layer must contain at least one book.

Input

There are several test cases in the input. The first line of each test case contains two integers N and K (1 ≤ K ≤ N ≤ 100). The second line contains N integers, indicating the heights of the books. You can assume the height of every book is no more than 1000. The input is terminated with N = K = 0.

Output

Output one line for each test case, that is, the minimum height of the bookshelf.

Sample Input

4 2 1 4 2 3 4 2 4 1 2 3 4 4 1 2 3 4 0 0

Sample Output

5 7 10

Hint

For the first sample, the best strategy is 1+max(4,2,3)=5 For the second sample, the best strategy is max(4,1,2)+3=7 For the third sample, the best strategy is 1+2+3+4=10

Source

TJU Programming Contest 2007 by RoBa
有序的划分模型
关键是要确定第i本书要放到那层书架上。
另dp[i][j]为第i本书放到第j层书架上时的总高度的最小值。
则dp[n][k]即为所求。
dp[i][0]=INF
对于第i本书,能放到的书架层数x是有个范围的。
对于第x层书架,能放进去的书也是有个范围的。
dp[i][j]=min{dp[k-1][j-1]+M[k][i],k>=j&&k<=i} 
①单独放到j层书架上。
②第k本书到第i本书放到第j层书架上。
取最小值
其中M[k][i]需要预处理出来第k本书到第i本书之间(包含)的最大书本高度。
因此算法复杂度为O(n^3).
 
题解:AtCoder AT_awc0081_d Organizing the Bookshelf 等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。也就是说,从左到右看剩下的书籍时,任意两本相邻的书,左侧书的页数必须严格小于右侧书的页数。注意,由于只移除书籍而不重新排列,剩下书籍的相对顺序与原始顺序相同。当选择移除哪些书使得剩下书籍的页数从左到右严格单调递增时,求移除书籍的最小总手续费。为了改善书架的外观,高桥想移除一些书,使得剩下书籍的页数从左到右是。 阅读详情

相关推荐

k8s部署 普罗米修斯(Prometheus)监控

Prometheus是一个开源的服务监控系统和时序数据库其提供了通用的数据模型和快捷数据采集、存储和查询接口它的核心组件Prometheus服务器定期从静态配置的监控目标或者基于服务发现自动配置的目标中进行拉 取数据新拉取到啊的 数据大于配置的内存缓存区时,数据就会持久化到存储设备当中。

D2961953033的博客 3855

POJ 3268 Bookshelf 2 动态规划法题解

Description Farmer John recently bought another bookshelf for the cow library, but the shelf is getting filled up quite quickly, and now the only available space is at the top. FJ has N cows (1 ≤ 

靖空间 1794

Zephyr OS实战指南:从入门到精通物联网开发

本文提供了一份详尽的Zephyr OS实战指南,涵盖从开发环境搭建到物联网应用开发的全过程。文章详细介绍了如何利用Zephyr OS进行线程管理、设备驱动开发、低功耗设计以及蓝牙通信,并通过具体代码示例帮助开发者快速掌握这一专为物联网设备设计的开源实时操作系统,实现从入门到精通的跨越。

weixin_29201933的博客 546

USACO2011Open Gold Bookshelf 题解

可以把题目理解为在n本书中”切几刀”.      当n2)可以解决:      dp[i]表示在前i本书,第i本书为当前书架的最后一本书的最小高度.dp[i]=min{dp[j]+mx[j+1,i]}且sum[j+1,i]        当n 通过dp[i]=min{dp[j]+mx[j+1,i]},当mx[j+1,i]为h[i]时,j越小越优.假设在i前面,第一本比i高的书下标为x,如

LIN452 999

Eclipse 数据空间组件(EDC)项目介绍

在当今数字经济的背景下,数据成为了新的“石油”。但与石油不同的是,数据可以无限共享且再生。然而,如何在保持数据主权的前提下实现高效、安全的数据共享,成为了企业和组织面临的主要挑战。这时,**Eclipse 数据空间组件(Eclipse Dataspace Components, EDC)**应运而生,它为企业在多方参与的数据交换中提供了一个标准化、可扩展的解决方案。数据空间不仅是一个多组织间的数据共享协议,还是一套支撑这些协议运行的技术基础设施。

m0_74331272的博客 4598

(OSTrack)Joint Feature Learning and Relation Modeling for Tracking A One-Stream Framework

Joint Feature Learning and Relation Modeling for Tracking A One-Stream Framework (OSTrack)

小火山的博客 1653

POJ 3628 Bookshelf 2 题解

本题解法很多,因为给出的数据特殊性故此可以使用DFS和BFS,也可以使用01背包DP思想来解。 这里使用BFS,缺点是比DFS更加耗内存,不过优点是速度比DFS快。 当然也比DFS难写点: int N, B; int Height[21]; inline int mMin(int a, int b) { return a > b? b : a; } inline int mMax(int a

靖空间 1183

论文阅读: SIGIR 2025 ID-Free Not Risk-Free: LLM-Powered Agents Unveil Risks in ID-Free Recommender Syste

咱们平时用的推荐系统(比如购物APP推商品、视频APP推剧),大多是“有ID”的——每个用户、每个商品都有个专属ID,系统靠这些ID记录你的浏览、购买历史,再给你推喜欢的东西。但这种方式有个大问题:新用户、新商品刚上线时没有ID历史数据,系统没法精准推荐,这就是“冷启动”难题。后来人们搞出了“无ID推荐系统”:不用ID了,改成直接分析商品的文字信息(比如商品标题、描述),靠大语言模型(LLM,类似ChatGPT的技术)把文字转成“语义代码”,再通过这些“代码”判断你可能喜欢什么。

CSPhD-winston的博客 977

书架 计蒜客----T1233(贪心算法)非常基础

蒜头君最近买了一个书架用来存放奶牛养殖书籍,但书架很快被存满了,只剩最顶层有空余。 蒜头君共有 N 头奶牛(1≤N≤20,000),每头奶牛有自己的高度 Hi(1≤Hi≤10,000),NN 头奶牛的总高度为 S。书架高度为 B(1≤B≤S<2,000,000,007). 为了到达书架顶层,奶牛可以踩着其他奶牛的背,像叠罗汉一样,直到他们的总高度不低于书架高度。当然若奶牛越多则危险性越大。为了帮助John到达书架顶层,找出使用奶牛数目最少的解决方案吧。 输入格式 第 11 行:空格隔开的整数 N 和.

二进制宇宙的博客 1412

Codex 团队如何用自己的产品构建产品——整个 Spec 只有 10 个要点

OpenAI Codex团队采用极简产品开发模式,整个产品规格仅10个要点。团队50-100人长期仅1名PM,设计师代码量已超过工程师。产品负责人Alexander Embiricos透露,团队几乎不写详细文档,仅在需要协调时写简短要点。OpenAI采用独特规划哲学:只做8周内短期或长期方向性规划,拒绝中期路线图。2025年GPT-5.2 Codex发布后,模型能力突破催生了桌面应用开发。团队强调"让离代码最近的人做决策",PM角色转变为"填空者",设计师与工程师界限

347

【YOLOv11改进 - 特征融合】SDI:多层次特征融合模块,替换contact操作

【YOLOv11改进 - 特征融合】SDI:多层次特征融合模块,替换contact操作

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 1771

USACO Bookshelf S题解:单调栈+线段树优化DP的实战拆解

动态规划(DP)是处理序列分段最优决策的常用方法,其核心在于状态转移方程。当朴素转移复杂度达到O(n²)时,往往需要从数据特性中挖掘优化空间。区间最大值贡献类DP中,最大值随起点呈现阶梯状单调变化,单调栈可以高效维护这种分段结构,而线段树支持区间加法和区间最小值查询,能够快速更新候选起点代价并获取最优值。这一组合在算法竞赛与工程优化中都有广泛价值,常用于解决书架分层的宽度约束与最小化层高成本问题。USACO经典题Bookshelf S正是此类题型的代表,通过单调栈合并高度段、线段树区间加,可将复杂度从O(n

weixin_32822843的博客 125

EndNote X9 快速上手教程(毕业论文参考文献管理器)

EndNote X9 快速上手教程一、EndNote X9安装1.安装2 安装之后重要步骤二、第一次打开 EndNote三、参考文献引用1. 导入知网文献2. 参考文献引用四、常见问题1. 引用文献中出现%J的问题2 参考文献中出现et.al1 在文章中引用的编号的地方出现2 在参看文献列表里出现 一、EndNote X9安装 1.安装 打开文件夹 安装前,一定要读 #Readme.txt 文件 一定要把License.dat和ENX9Inst.msi放在同一文件夹,安装的时候会自动激活。 我的安装路

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 2万+

Codeforces Round #178 (Div. 2) B. Shaass and Bookshelf —— DP

题解:http://codeforces.com/contest/294/problem/B B. Shaass and Bookshelf time limit per test 1 second memory limit per test 256 megabytes input standard input output

A man can be destroyed, but not defeated. 657

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

codeforces 294B Shaass and Bookshelf (暴力dp)

题解:给出n本书,每本书有厚度t[i]和书的宽度w[i],每本书的高度相同。现在想要制作一个书架,为了节省材料,尽量将书竖着放,剩下的书可以横着放在之前竖着的书的上面(当然宽度的那个面朝自己)。求书架的最小宽度。 题解: 这题有点想背包,暴力dp过之。我们可以先将书全部放在书架上然后挑出一些书放在上头。 那么状态dp[i][j][k]表示第i本书位置(这本书可以拿掉也可以不拿掉)书架的宽度为

ACM之梦 975

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Codeforces 294B Shaass and Bookshelf:dp

题目链接:http://codeforces.com/problemset/problem/294/B 题意:   有n本书,每本书的厚度为t[i],宽度为w[i] (1<=t[i]<=2, 1<=w[i]<=100)。   然后让你将所有书按照下面的方式摆放:      在下面放一本书会占用下面t[i]的长度。   在上面放一本书会占用上面w[i]的...

a1392136的博客 217

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

B. Shaass and Bookshelf DP

http://codeforces.com/contest/294/problem/B 据说是贪心,我用了一个复杂度是2e8的dp水过去了。 其实这题就是给你n个数,每个数有两个权值,分成两组,使得第一个权值之和,和第二个权值之和的最大值最小。 那么直接设dp[i][j][k][h]表示前i个数中,选了j个,第一个权值的和是k,第二个权值是h,是否可能。 这里是一定要选出n个的,就是n个数...

weixin_30526593的博客 233

[BZOJ2678][Usaco2012 Open]Bookshelf

P.S. 偶然间发现可以用 markdown。。。 [BZOJ2678][Usaco2012 Open]Bookshelf 试题描述 When Farmer John isn't milking cows, stacking haybales, lining up his cows, or building fences, he enjoys sitting down with a good bo...

weixin_30908707的博客 243

洛谷P1848 [USACO12OPEN]书架Bookshelf

https://www.luogu.org/problem/show?pid=1848 这道题目的线段树简直就是水题,然后用set去做,日了狗了,搞了1个小时左右结果只过4个点,标算又看不懂,先把坑挖好; 首先这道题目的暴力dp那是显然的 f[i]可以从f[j-1]+max(h[j]……h[i])推得 不难发现无论是f[]还是当j确定的max(h[j]……h[i]),都是单调的; 那么我们

我怎么这么菜的呢 938

11.22糖丸比赛题解

为什么这么多dp!!!

2301_81408620的博客 782

jzoj P1541 【USACO Open 2012银】书架Bookshelf

题目描述当FJ不在为奶牛挤奶、打包包裹、将他的奶牛排成一队、或是砌栅栏的时候,他喜欢坐着看一本好书。多年来他收集了N(1 <= N <= 2,000)本书,他想建立一套新的书架来保存他的书。每本书宽W(i),高度为H(i)。书需要被按照顺序地放进书架,比如:第一个书架放了k本书,那应该是第1本到第k本,第二个书架放的书应该以第k+1本开始。每个书架可以存放宽度和至多为L(1 <= L <=1,000

生如夏花之绚烂 974

Problem B:Bookshelf Building(GCPC2020)

Problem B:Bookshelf Building(GCPC2020) 题解链接 主要是觉得题目不错 单独放个传送门在dp专题里(嗯

tcy今天长胖了吗的博客 303
上一篇: A*路径寻找算法入门(转)
下一篇: POJ1404I-Keyboard题解动态规划DP
power721
博客等级 码龄18年 176粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值