P5095 [USACO12OPEN] Bookshelf S

P5095 [USACO12OPEN] Bookshelf S

文章目录

  • P5095 [USACO12OPEN] Bookshelf S
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例 #1
      • 样例输入 #1
      • 样例输出 #1
    • 提示
    • 思路
    • 赛时 code
    • 别人code

题目描述

Farmer John 闲来无事的时候总喜欢坐下来看书。这些年来,他一共收集了 N N N 本书( 1 ≤ N ≤ 2000 1 \leq N \leq 2000 1N2000),他打算搭一共新的书架来装这些书。

每本书都有个宽度 w i w_i wi 和高度 h i h_i hi,书必须按顺序来摆放(即同一层书架摆的书必须是连续的一个区间)。每层书架的总宽度不能超过 L L L 1 ≤ L ≤ 1 0 9 1 \leq L \leq 10^9 1L109),每层书架的高度等于这一层最高的书的高度,整个书架的高度等于每层书架的高度之和。

现在请你帮 FJ 求出书架高度的最小值。

输入格式

第一行两个整数 N , L N,L N,L

接下来 N N N 行,每行两个整数 h i , w i h_i,w_i hi,wi 1 ≤ h i ≤ 1 0 6 1 \leq h_i \leq 10^6 1hi106 1 ≤ w i ≤ L 1 \leq w_i \leq L 1wiL)。

输出格式

输出一个整数,书架高度最小值。

样例 #1

样例输入 #1

5 10
5 7
9 2
8 5
13 2
3 8

样例输出 #1

21

提示

第一层放第一本书,第二层放第二,三,四本书,第三层放第五本书,总高度为 5 + 13 + 3 = 21 5+13+3=21 5+13+3=21,可以证明不存在更优的方案。

思路

盲猜dp

一开始是两重的数组,要用线段树和 r m q rmq rmq 维护还不能过。

后面发现其实最终的层数和答案关系不大,关键的是高度

所以我们设 d p i dp_i dpi 表示放下前 i i i 本书的最小高度

那么
d p i = M I N j = 1 i − 1 d p j + M A X k = j i h k dp_i = MIN_{j = 1}^{i - 1} dp_j + MAX_{k = j}^ih_k dpi=MINj=1i1dpj+MAXk=jihk
考试时我用了 r m q rmq rmq 维护后面的 h h h ,其实不用,只要 j j j 从后枚举维护最大值就好了。

赛时 code

#include <bits/stdc++.h>
#define fu(x , y , z) for(int x = y ; x <= z ; x ++)
#define fd(x , y , z) for(int x = y ; x >= z ; x --)
#define LL long long
using namespace std;
const int N = 2005;
LL l , h[N] , w[N] , sq[35] , rmq[N][35] , ans , s[N] , dp[N];
int n;
void pre () {sq[0] = 1;for (int i = 1 ; i <= 30 ; i ++) sq[i] = sq[i - 1] * 2;fu (i , 1 , n) rmq[i][0] = h[i];fu (j , 1 , 30) {fu (i , 1 , n) {if (i + sq[j] - 1 > n) break;rmq[i][j] = max (rmq[i][j - 1] , rmq[i + sq[j - 1]][j - 1]);}}
}
LL find (int x , int y) {int lst = 30 , z;LL ansf = 0;while (x <= y) {for (int i = lst ; i >= 0 ; i --) {if (x + sq[i] - 1 > y) continue;ansf = max (ansf , rmq[x][i]);x = x + sq[i];z = i;}lst = z;}ansf = max (ansf , h[y]);return ansf;
}
int main () {scanf ("%d%lld" , &n , &l);fu (i , 1 , n)scanf ("%lld%lld" , &h[i] , &w[i]);pre ();fu (i , 1 , n) s[i] = s[i - 1] + w[i];fu (i , 1 , n) dp[i] = 1e18 + 5;fu (i , 1 , n) {fd (j , i - 1 , 0) {if (s[i] - s[j] > l) break;dp[i] = min (dp[i] , dp[j] + find (j + 1 , i));}}printf ("%lld" , dp[n]);return 0;
}

别人code

#include <bits/stdc++.h>
using namespace std;
const int N = 2002;
int n, m, p, k, ans, sum, tot, cnt, a[N], b[N], f[N], c[N], l;
int main()
{std::cin>> n >> l;for(int i = 1; i <= n; i++){std::cin >> a[i] >> b[i];c[i] = c[i - 1] + b[i];f[i] = 1e9;}for(int i = 1; i <= n; i++){f[i] = f[i - 1] + a[i];tot = a[i];for(int j = i - 1; j >= 1; j--){if(c[i] - c[j - 1] > l)break;tot = max(tot, a[j]);f[i] = min(f[i], f[j - 1] + tot);}}cout << f[n];return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/6479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sentinel深入讲解流量控制/熔断降级

文章目录 sentinelsentinel介绍重要的核心概念引入依赖限流的规则熔断规则yaml 项目配置使用注解 SentinelResource讲解类的静态方法 sentinel sentinel介绍 随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构…

【深度学习之YOLO8】环境部署

目录 一、确定版本CUDA toolkit、cuDNN版本Python、PyTorch版本 二、安装Python下载环境变量验证安装 三、安装Anaconda安装环境变量验证安装创建conda虚拟环境常用命令 四、安装CUDA toolkit下载环境变量验证安装 五、配置cuDNN下载 六、安装PyTorch(torchtorchversiontorchau…

【AI】使用vscode编辑查看YOLOv8源码

1、下载vscode 官网地址:https://code.visualstudio.com/ 针对ubuntu点击下载deb安装包,默认下载地址如下,下载速度很慢,而且会下载失败,解决方法如下: 将“https://az764295.vo.msecnd.net”改为“https://vscode.cdn.azure.cn”后,下载会很快。 例如,将: https:…

华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(五)

系列文章目录 个人简介&#xff1a;机电专业在读研究生&#xff0c;CSDN内容合伙人&#xff0c;博主个人首页 Python面试专栏&#xff1a;《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读&#xff0c;一起进步&#xff01;&#x1f31f;&#x1f31f;&#x1f31f; …

Java设计模式—软件设计原则和七大常用的设计模式

前言 设计模式是软件开发中常见问题的解决方案&#xff0c;它们是经过验证的并且经常被重复使用的设计模板。设计模式提供了一套通用的解决方案&#xff0c;帮助开发人员构建高质量、可维护和可扩展的代码。设计模式并不是特定于某种编程语言&#xff0c;而是面向对象编程范式…

机器学习深度学习——随机梯度下降算法(及其优化)

在我们没有办法得到解析解的时候&#xff0c;我们可以用过梯度下降来进行优化&#xff0c;这种方法几乎可以所有深度学习模型。 关于优化的东西&#xff0c;我自己曾经研究过智能排班算法和优化&#xff0c;所以关于如何找局部最小值&#xff0c;以及如何跳出局部最小值的一些基…

RUST腐蚀基因种植

RUST腐蚀基因种植 试验地址:www.xiaocao.cloud RUST基因: RUST基因计算器&#xff0c;腐蚀基因计算器&#xff0c;前后端分离架构&#xff0c;前端目录/resouce/ui/rust&#xff0c;欢迎大佬评价&#xff0c;

无涯教程-HTML Event Reference

当用户访问您的网站时,他们会执行诸如单击文本和图像以及给定的链接,将鼠标悬停在事物上等操作。这些都是JavaScript称为事件的Example。 我们可以用Javascript或vbscript编写事件处理程序,并可以将这些事件处理程序指定为事件标签属性的值。 HTML 4.01规范定义了19个事件属性…

算法笔记(java)——回溯篇

回溯算法解决问题最有规律性&#xff0c;借用一下卡哥的图&#xff1a; 只要遇到上述问题就可以考虑使用回溯&#xff0c;回溯法的效率并不高&#xff0c;是一种暴力解法&#xff0c;其代码是嵌套在for循环中的递归&#xff0c;用来解决暴力算法解决不了的问题&#xff0c;即…

Tensorflow无人车使用移动端的SSD(单发多框检测)来识别物体及Graph的认识

环境是树莓派3B&#xff0c;当然这里安装tensorflow并不是一定要在树莓派环境&#xff0c;只需要是ARM架构就行&#xff0c;也就是目前市场上绝大部分的嵌入式系统都是用这套精简指令集。 在电脑端的检测&#xff0c;有兴趣的可以查阅SSD(Single Shot MultiBox Detector)系列&a…

19 QListWidget控件

Tips: 对于列表式数据可以使用QStringList进行左移一块输入。 代码&#xff1a; //listWidget使用 // QListWidgetItem * item new QListWidgetItem("锄禾日当午"); // QListWidgetItem * item2 new QListWidgetItem("汗滴禾下土"); // ui->…

十、正则表达式详解:掌握强大的文本处理工具(二)

文章目录 &#x1f340;多字符匹配&#x1f340;匹配规则的代替&#x1f340;特殊的匹配&#x1f340;特殊的匹配plus&#x1f340;总结 &#x1f340;多字符匹配 星号&#xff08;*&#xff09;&#xff1a;匹配0个或者多个字符 import retext 111-222-333 result re.matc…

苹果的Apple GPT要来了?

据外媒消息&#xff0c;苹果正在内部开发类 ChatGPT 的产品&#xff0c;与微软、OpenAI、谷歌、Meta 等科技巨头在生成式 AI 赛道展开竞争。该消息使得苹果股价上涨了 2%。据苹果工程师透露&#xff0c;苹果在内部构建了代号为“Ajax”的大语言模型开发框架&#xff0c;并构建了…

Unity自定义后处理——Bloom效果

大家好&#xff0c;我是阿赵。   继续介绍屏幕后处理效果&#xff0c;这一期讲一下Bloom效果。 一、Bloom效果介绍 还是拿这个模型作为背景。 Bloom效果&#xff0c;就是一种全屏泛光的效果&#xff0c;让模型和特效有一种真的在发光的感觉。 根据参数不一样&#xff0c;可…

Packet Tracer – 实施静态 NAT 和动态 NAT

Packet Tracer – 实施静态 NAT 和动态 NAT 拓扑图 目标 第 1 部分&#xff1a;利用 PAT 配置动态 NAT 第 2 部分&#xff1a;配置静态 NAT 第 3 部分&#xff1a;验证 NAT 实施 第 1 部分&#xff1a; 利用 PAT 配置动态 NAT 步骤 1&#xff1a; 配置允许用于 NAT …

【基于CentOS 7 的iscsi服务】

目录 一、概述 1.简述 2.作用 3. iscsi 4.相关名称 二、使用步骤 - 构建iscsi服务 1.使用targetcli工具进入到iscsi服务器端管理界面 2.实现步骤 2.1 服务器端 2.2 客户端 2.2.1 安装软件 2.2.2 在认证文件中生成iqn编号 2.2.3 开启客户端服务 2.2.4 查找可用的i…

Django中,对于GET /favicon.ico请求的操作

当浏览器请求网页时&#xff0c;通常会自动请求网站根目录下的/favicon.ico文件&#xff0c;该文件是用于网站图标的。在Django中&#xff0c;对于GET /favicon.ico请求的操作过程如下&#xff1a; Django的URL分发器&#xff08;URL dispatcher&#xff09;接收到请求&#xf…

AJAX-day03-AJAX进阶

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 同步代码和异步代码 回调函数地狱 Promise - 链式调用 Promise 链式应用 async函数和await async函…

Stable Diffusion入门笔记(自用)

学习视频&#xff1a;20分钟搞懂Prompt与参数设置&#xff0c;你的AI绘画“咒语”学明白了吗&#xff1f; | 零基础入门Stable Diffusion保姆级新手教程 | Prompt关键词教学_哔哩哔哩_bilibili 1.图片提示词模板 2.权重&#xff08;提示词&#xff09; 无数字 (flower)//花的…

MQTT网关 5G物联网网关 PLC控制工业网关

MQTT网关&#xff0c;两个以上的节点之间通信的新型网关&#xff0c;网络节点之间通过互连来实现双向通信。支持PLC协议转MQTT&#xff0c;实现plc数据采集上云&#xff0c;物联网云平台对接&#xff0c;广泛应用于工业自动化plc远程监测控制。 计讯物联5G MQTT物联网网关TG463…