HDU 2795 Billboard(线段树)

IEEE GRSL投稿全流程避坑指南:从Latex模板到校样缴费,新手必看的7个关键节点 本文详细解析了IEEE GRSL投稿全流程中的7个关键节点,从LaTeX模板选择到校样缴费,帮助新手避免常见陷阱。特别针对图像格式转换、审稿意见回复、版权转移等环节提供实用技巧,确保投稿过程高效顺利。 阅读详情

题目链接: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;
}


疲劳容器的定义_FKM规范针对非焊接构件疲劳强度评估实例介绍(下篇) 一、写在前面FKM Inside ANSYS软件,该软件是在FKM 规范的基础上,在ANSYS Workbench内开发的进行非焊接构件及焊缝静强度和疲劳强度评估的工具包。基于ANSYS计算模型的信息,在图形用户界面定义相关设置,利用有限元分析计算结果,自动嵌入FKM规范要求的静强度计算和疲劳强度计算流程和方法,自动将应力结果和相关物理量传递给工具包,无须手动预先选择评估的热点区域,可以... 阅读详情

相关推荐

从勒索软件攻击到数据重生:SQL Server MDF文件修复的实战生存指南

本文详细介绍了SQL Server MDF文件在遭遇勒索软件攻击后的修复策略,重点解析了Recovery Toolbox工具链的应用流程。从灾难评估到数据验证,提供分阶段修复操作、高级修复技术及防御加固方案,帮助企业快速恢复数据库并提升安全防护能力。

weixin_28327051的博客 715

[HDU 2795]Billboard[线段树]

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

闲停 457

Ubuntu双系统引导修复实战:boot-repair工具详解

本文详细介绍了使用boot-repair工具修复Ubuntu双系统引导丢失问题的实战方法。当GRUB引导菜单因安装新系统或更新而损坏时,通过制作Ubuntu启动盘进入Live环境,安装并运行boot-repair,可一键完成系统修复引导,自动化执行GRUB重装与配置,解决无法进入Windows或Ubuntu的常见故障。

weixin_29224589的博客 357

HDU2795—Billboard 线段树

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

GYH0730的博客 399

【Audio】基于STM32 I2S移植WM8978 Audio Codec驱动

1. WM8978简介 WM8978是一款低功耗,高质量的立体声编解码器,专为便携式应用,如数码相机或数码摄像机等。 该芯片集成了立体声差分麦克风的前置放大器,并包括扬声器、耳机和差分或立体声线输出的驱动器。外部组件要求减少,因为不需要单独的麦克风或耳机放大器。 WM8978的功能框图如下所示: 2. WM8978硬件连接 使用STM32F429+WM8978硬件平台,通过I2S接口来读写音频数据,I2C接口发送写命令控制WM8978相关功能。 STM32F429与WM8978的引脚连接如下:

ZHONGCAI0901的博客 1万+

RK3588部署YOLO模型 包含模型量化+npu轻量化+ubuntu+RGA图像加速和多线程模型加速 包源码

本专栏为深度学习部署全栈学习体系,包含68篇由浅入深的教程,专为零基础学习者设计。内容涵盖TensorRT与RK3588平台部署技术,包含Jetson系列和RK系列硬件部署实战,采用"理论+源码+实战"三位一体的教学模式。学习路径从基础环境搭建到模型优化、容器化部署、多硬件平台适配,最终掌握工业级AI部署能力。特色包括C++基础教学、Docker容器化、INT8量化、多线程优化等核心技术,并附带YOLOv5、人脸检测、车牌识别等多个实战项目源码。适合算法工程师转部署方向、嵌入式开发者及对

FJN110的博客 3731

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

【YOLOv11】070、YOLOv11异常检测:正常数据训练下的异常目标识别

本文探讨了如何利用YOLOv11模型进行工业异常检测,重点介绍了仅使用正常样本训练模型的创新方法。文章首先通过产线误报案例引出异常检测的核心问题,阐述了YOLOv11作为特征提取器的改造思路,包括正常数据训练、特征空间构建和异常度量等关键步骤。实战部分提供了精简代码示例,强调数据增强控制、特征层选择和自编码器应用等技巧。作者还总结了容易出错的细节,如特征选择、阈值设定和计算效率优化等,并给出实用建议:从简单方法入手、重视可视化、确保数据质量、部署时设置复核机制等。最后指出该方法虽能减少对异常样本的依赖,但需

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 235

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

突破Cloudflare 5秒盾!Python爬虫+GPT分析JS混淆实战(附完整代码)

这篇文章的核心观点其实不是“怎么过CF”,而是如何把LLM嵌入逆向工程的工作流。AI不会取代逆向工程师,但它正在重新定义逆向工程师的工作方式。过去我们80%的时间花在读懂混淆代码上,现在这部分可以外包给GPT,我们把精力集中在架构判断、异常处理和系统设计这些真正需要人类直觉的地方。技术会变,CF的防护会升级,GPT的能力也会迭代。但这种“人机协作拆解复杂问题”的方法论,比任何具体的绕过技巧都更有长期价值。参考资料Cloudflare Bot Management官方文档。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 535

华为od 面试八股文_C++_01_含答案

华为od 面试八股文_C++_01_含答案

MISAYAONE的博客 5595

hdu 2795 Billboard 题解 (线段树)

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

LightningUZ的博客 351

2018安徽省青少年信息学奥林匹克(AHOI)初中组

12 种合法的排列分别为:1, 3, 2, 4, 2, 3, 1, 4, 3, 1, 4, 2, 3, 2, 4, 1, 1, 3, 4, 2, 2, 3,4,1,1,4,2,3, 2,4,1,3, 4,1,3,2, 4,2,3,1, 1,4,3,2, 2,4,3,1。分为 2 组,一组的队员实力值是{4, 5, 2, 3},一组是{-4, -3, -5},其中最小的组人数为 3,可以发现没有比 3 更优的分法了。[0, 1, 1, 2]同样不是合法的分组方案,因为出现了两个实力值为 1 的选手。

weixin_42358969的博客 1143

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

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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

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

生命有一种绝对 1186

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

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

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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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、付费专栏及课程。

余额充值