HDU 2795 Billboard(线段树)

网络设备调试指南:如何用MDIO Clause22/45协议读写Marvell MV88E6390寄存器 本文深入解析了如何通过MDIO Clause 22/45协议对Marvell MV88E6390交换芯片进行寄存器读写调试。文章详细对比了两种协议的本质区别与适用场景,并重点阐述了MV88E6390的直接与间接寻址策略,提供了实战代码示例与关键调试技巧,帮助网络工程师高效解决配置与通信问题。 阅读详情

题目链接:HDU 2795 Billboard

【题意】给你一张h*w(1 <= h,w <= 10^9)大小的海报,上面会张贴一些数量为n(1<=n<=200000)高度为1宽度不定的小纸条,然后输入一些小纸条的宽度,求出它所张贴的高度。小纸条张贴是尽量靠左靠上,如果不能张贴,就输出-1.

【思路】海报的数据特别大,思路就是用线段树来优化,但是高度h高达10^9,直接建树肯定会爆,但纸条最多有n(200000)张,于是可以用len = min(h, n)来进行建线段树[1, len],节点维护的是海报每一行的可利用空白宽度。每次查询优先往左子树查询,查询之后还要更新数据,保留新的可利用空白宽度。

【吐槽】第一次自己来写线段树,以前对线段树一直是一种仰望的心态,的确是很牛逼的算法,有二分的思想在里面,转换为logn的强大力量。但是真的不好写啊哭数据结构就是伤不起。

下面贴AC代码:

/*
** HDU 2795 Billboard
** Created by Rayn @@ 2014/05/08
** 线段树
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAX = 200005;

int tree[MAX<<2];

void BuildTree(int k, int l, int r, int val)
{
    tree[k] = val;
    if(l == r)
        return ;
    int mid = (l + r) / 2;
    BuildTree(k<<1, l, mid, val);
    BuildTree(k<<1|1, mid+1, r, val);
}
int Query(int k, int l, int r, int val)
{
    if(l == r && tree[k] >= val)
    {
        tree[k] -= val;
        return l;
    }
    int mid = (l + r) / 2, ans;
    if(tree[k<<1] >= val)
        ans = Query(k<<1, l, mid, val);
    else if(tree[k<<1|1] >= val)
        ans = Query(k<<1|1, mid+1, r, val);
    else
        ans = -1;
    tree[k] = max(tree[k<<1], tree[k<<1|1]);
    return ans;
}
int main()
{
    int h, w, n;
    while(scanf("%d%d%d", &h, &w, &n) != EOF)
    {
        h = min(h, n);
        BuildTree(1, 1, h, w);
        for(int i=0; i<n; ++i)
        {
            int wid;
            scanf("%d", &wid);
            printf("%d\n", Query(1, 1, h, wid));
        }
    }
    return 0;
}


利用Sigrity的SPEED2000进行时域电源噪声分析 SPEED2000进行时域电源噪声分析 阅读详情

相关推荐

告别手动操作!用Python脚本批量处理Siemens NX零件文件(导入/导出/移除参数)

本文详细介绍了如何利用Python脚本实现Siemens NX零件文件的批量处理,包括导入、导出和移除参数等操作。通过NX Open API和Python UF接口,工业设计师可以大幅提升工作效率,告别繁琐的手动操作。文章提供了完整的实战指南,涵盖环境配置、核心功能实现以及性能优化技巧,特别适合需要进行Siemens-NXUG二次开发的工程师参考。

weixin_28222493的博客 261

[HDU 2795]Billboard[线段树]

题目链接:[HDU 2795]Billboard[线段树] 题意分析: 有一个高度为h,宽度为w的广告板,给出n个海报,每个海报高度1,宽度x。问能否贴到广告板上,能输出贴到的行,否则输出-1。每张海报必须贴到能贴部分的最左上角。 解题思路: 用线段树区间存:区间中还能贴的最大宽度;每次查询整个区间,满足就继续,否则返回,当l == r时说明查询到了最满足的行,然后进行更新。 个人感受:

闲停 457

CHNS数据库下载与使用指南:从申请到导入的全流程解析

面板数据是经济学与公共卫生实证研究的重要支撑。中国健康与营养调查(CHNS)自1989年持续追踪中国居民的家庭与个人健康、营养及经济行为,为研究者提供了跨度近三十年的纵向微观数据。理解CHNS的数据组织原理与申请机制,是高效利用该数据的前提。该数据广泛适用于健康经济学、膳食营养分析及公共政策评估等场景。围绕CHNS的下载流程,完整梳理了注册申请、数据文件解析以及Stata、R、Python三种工具的读取方法,并针对邮箱验证、文件损坏、ID匹配等常见问题提供排查建议,帮助研究者快速建立数据处理基础。

weixin_33624741的博客 285

HDU2795—Billboard 线段树

HDU2795—Billboard 在学校的入口处有一个巨大的矩形广告牌,高为h,宽为w。所有种类的广告都可以贴,比如ACM的广告啊,还有餐厅新出了哪些好吃的,等等。。   在9月1号这天,广告牌是空的,之后广告会被一条一条的依次贴上去。   每张广告都是高度为1宽度为wi的细长的矩形纸条。   贴广告的人总是会优先选择最上面的位置来帖,而且在所有最上面的可能位置中,他会选择最左面的位置,而且不能...

GYH0730的博客 399

RPCA模型及GoDec算法

一、基础知识 在线性代数中,秩的物理意义是矩阵中最大的不相关的向量个数,因此秩可以用来度量相关性;而在图像处理中,秩就可以理解为图像中所包含的信息的丰富程度。图片中比较突兀的成分,会增加图像矩阵的秩,一幅清晰的自然图像其数据矩阵往往是低秩或者近似低秩的,这是因为其中的图像信息有很大的相关性,但如果图像中引入噪声,那么存在随机幅值任意大但是分布稀疏的误差破坏了原有数据的低秩性。 低秩矩阵:如果AAA是一个m×nm×nm×n的矩阵,rank(A)rank(A)rank(A)是矩阵AAA的秩,如果rank(A)

小席的学习日志 7688

华为OD机试真题 新系统2026-04-01 C语言 实现【计算数列位置N的值】

1、输入M、N两个数,则按照以下规则形成一个数列; 2、数列的前M个元素的值为1到M; 3、从M+1个元素开始,计算的逻辑为: 如果其前面的M个元素中,存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之如果其前面的M个元素中,不存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之差;

MISAYAONE的博客 591

hdu 2795 Billboard ( 线段树 )

http://acm.hdu.edu.cn/showproblem.php?pid=2795 Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7320 Accepted Submission(s)...

diansitao5461的博客 161

基于STM32设计的老人监护系统(OneNet)_118

该项目是基于STM32设计的老人监护系统。本系统可以通过脉搏心率传感器,体温传感器检测老人的脉搏状态,体温状态,把老人的数据状态在STM32单片机内部进行处理,然后通过GSM模块上传到OneNet云平台,在通过可视化界面显示出来,这样可以让子女随时随地了解到老人现在的身体情况,以便对老人的突发情况能够做出及时的预防和处理。而且如今,随着老人年纪不断的增长,身体体质不断的衰弱,在上楼梯或者走斜坡的时候很容易会发生摔倒或跌倒,如果不及时的接收到治疗,很可能会造成很严重的后果。

7456

HDU 2795 Billboard (线段树+贪心)

HDU 2795 Billboard (线段树+贪心) 手动博客搬家:本文发表于20170822 21:30:17, 原地址https://blog.youkuaiyun.com/suncongbo/article/details/77488127 URL: http://acm.hdu.edu.cn/showproblem.php?pid=2795题目大意:有一个h*w的木板...

suncongbo's blog 179

YOLO11改进|注意力机制篇|引入ELA注意力机制

YOLO11添加ELA注意力机制

A1983Z的博客 3647

微信小程序 - 引入并使用 Fly.js 请求库(超级详细的教程及运行示例)提供 Fly.js 源码源文件下载,贴心的配置示例及注释,优雅快速的发起 http 网络请求

fly.js请求库官方教程文档,微信小程序封装fly.js请求,在小程序/mpvue中使用flyio发起网络请求的方法,微信小程序中如何使用flyio封装网络请求,微信小程序中如何使用flyio封装网络请求,最好的教程,fly最好的文档教程,微信小程序使用fly接口请求框架,引入fly.js报错,微信小程序中如何使用flyio封装网络请求,微信小程序引入Fly.js请求库,如何在fly中配置请求/响应拦截器,如何在微信小程序中优雅地发送异步请求,请求/响应拦截器,微信小程序-引入并使用F

🏆 前端领域优质创作者 5610

hdu 2795 Billboard 题解 (线段树)

原题链接: hdu 题意简述 有一个h∗wh*wh∗w的板子,和nnn条广告。每条广告的高度都是111,给定宽度。nnn条广告会被依次放到这个板子上,对于每条广告,会找到最上面的一行去放。在这最上面的一行里,又会找最左边的位置放。给定nnn个宽度,请输出nnn行,表示每个广告会被放在第几行。如果这个广告没有合适的位置放置,输出−1-1−1。 输入 多组数据。对于每组: h w n //如上所示 w...

LightningUZ的博客 351

Python 爬虫实战:爬取国家统计局公开数据

国家统计局作为权威的宏观经济数据发布机构,汇聚了人口、GDP、就业、产业经济等多维度的核心统计数据,是开展经济研究、政策分析、行业洞察的重要数据支撑。相较于商业数据平台,国家统计局的公开数据具备权威性、全面性和时效性等特点,但部分数据分散在不同栏目且缺乏结构化下载渠道。本文基于 Python 爬虫技术,系统讲解国家统计局公开数据的爬取方法,重点解决静态表格解析、分页数据抓取、数据结构化转换等问题,同时严格遵循政府网站数据使用规范,为科研、教学等场景提供合规的数据获取方案。本文以国家统计局官网(

2503_91057718的博客 1818

HDU-Billboard-2795(线段树)

hdu2795 Billboard Time Limit: 20000/8000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14101Accepted Submission(s): 6046 Problem Description At...

110

WINCC7.3破解文件

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

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【解题报告】 HDU 2795 Billboard -- 线段树的应用

题目大意:有一个广告板,告诉我们尺寸(即高度宽度),我们要贴广告,广告的尺寸规定为1*w,我们每次从最左上面开始贴,当给出的广告不够贴时,移到下一行贴。输出当前广告贴在第几行。 题目连接:->  HDU 2795 思路大意:拿高度来当"线段"进行拆分,每次更新一下贴完之后所剩余的长度,并顺便输出所在行即可。 接下来计算一下充当 线段树的数组 的宽度: 这个题目中广告版的高度范围比较大,1

生命有一种绝对 1186

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

HDU 2795 Billboard // 线段树 单点更新

题目描述HDU 2795 Billboard解题思路题目大意: 有一张h×w的矩形告示栏, 和 n 张 1×wi 的海报 海报每次张贴的位置为告示栏剩余位置的左上角. 要求支持下列操作: 1) 对于每张海报 输出其在告示栏的第几行 (若放不下, 则输出 -1)首先我们知道的是 告示栏上的海报最多只有n张, 即告示栏的行数最多只有n行有效 所以当输入的h大于n时, 令h = n 即可.

FZU_zyt的专栏_(:з」∠)_ 380

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

hdu 2795 Billboard 线段树 点更新

// hdu 2795 Billboard 线段树 点更新 // // 首先n最多是200000种,也就是说最多200000行, // 我们的线段树的区间保存的是L到R中最大的叶子节点的值 // 初始情况下都是板子的宽度。这样,每次放一块广告的时候 // 看1到h中最左边的叶子区间是什么就ok了,还是很好理解的 // // 做题的感悟,这道题其实是去年暑假集训的时候做的,当时 // 并不会,只会敲

TIMELIMITE的专栏 895

hdu 2795 Billboard -- 线段树

hdu 2795 Billboard 以h建立线段树维护最大值每个节点初始化最大值为w 对于每次改,从最左端开始找满足要求的位置 //#include<bits/stdc++.h> #include<iostream> #include<vector> //#include <unordered_map> using namespace std; //template<class...Args> //void debug(Args... args)

weach的博客 219

HDU 2795 Billboard(线段树)

题目链接:HDU 2795 Billboard 线段树单点更新,

fobdddf的专栏 562

HDU 2795 Billboard(线段树,单点查询)

题目链接: HDU 2795 Billboard 题意: 有个高为h宽为w的墙用于贴宣传海报,每张海报高为1,宽为wi,每张海报在能张贴的情况下优先选择最上面的最左面; 共有n张海报,问贴每张海报所在的行,如果贴不下,就输出-1. 分析; 建立区间为[1,h]的线段树,叶子结点即表示相应层。线段树中存储当前所有层中的最大剩余长度, 查询和更新操作其实放在一起了。 玩玩没想到的是,题目

ramay7 388

hdu 2795 Billboard(线段树)

题目链接:hdu 2795 Billboard 题目大意:有一个n∗m的公告板,一开始为空的,现在每次要想上面贴公告,长度为1∗wi,每次都尽量贴在高的地方。 解题思路:线段树,以每一行为节点建立线段树,n很大,但是q只有20w,所以只要用20w的节点即可。然后每个节点记录区间内的最大值,优先查询左区间。 #include #include #include using na

不慌不忙、不急不躁 681

线段树-hdu2795 Billboard(贴海报)

线段树-hdu2795 Billboard(贴海报) hdu2795 Billboard 题意:h*w的木板,放进一些1*L的物品,求每次放空间能容纳且最上边的位子 思路:每次找到最大值的位子,然后减去L 线段树功能:query:区间求最大值的位子(直接把update的操作在query里做了) 题意:有一块长方形h*w...

weixin_30374009的博客 159

HDU2795 Billboard 线段树

传送门:HDU2795 题意:h*w的木板,放进一些1*L的物品,每次优先放到能容纳且最上边最左边的位子,求每个物品在第几行。 思路:用线段树维护每一行的剩余长度,每次更新时优先询问左子树。代码中我将update和query合到一起了。 代码: #include #include #include #include #include #include #include #include #

WA是一笔财富 293

HDU 2795 Billboard(宣传栏贴公告,线段树应用)

HDU 2795 Billboard(宣传栏贴公告,线段树应用) ACM 题目地址:HDU 2795 Billboard 题意: 要在h*w宣传栏上贴公告,每条公告的高度都是为1的,并且每条公告都要尽量贴最上面最靠左边的,给你一系列的公告的长度,问它们能不能贴上。 分析: 不是非常好想,只是想到了就非常好写了。 仅仅要把宣传栏倒过来就好办了,这时候就...

weixin_30439031的博客 71

HDU2795 Billboard 线段树

题目链接:hdu2795 题意:有一个广告牌大小为h*w。有n个广告,每个广告高度为1,宽度为wi,要把广告贴到广告牌上。要求尽可能往上贴。并输出每个广告贴在第几行,如果不能贴上去则输出-1。 思路:可以用线段树来维护每个区间剩余打最大宽度。初始状态每个点值为w。每次查询的时候,如果左子树最大值大于wi,则往左子树查询,反之往右子树查询。 #include <bits/stdc++.h&gt...

江小举的博客 415

HDU2795 Billboard 线段树 单点更新

Problem DescriptionAt the entrance to the university, there is a huge rectangular billboard of size h*w (h is its height and w is its width). The board is the place where all possible announcements are

Bill_Utada的成长之路 1503
上一篇: HDU 1394 Minimum Inversion Number(逆序数)
下一篇: POJ 2418 Hardwood Species(字典树)
RaynX
博客等级 码龄13年 1粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值