[线段树练习2] 影子的宽度 - 统计标记个数

这篇博客介绍了一个信息学竞赛题目,涉及到利用线段树处理影子在墙上的总宽度计算。通过区间修改和区间查询的方法,解决统计影子覆盖范围的问题,同时注意在C++中负数向0取整可能导致的编号错误。给出的源代码展示了如何应用线段树和懒标记技术来解决此题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


题目描述

桌子上零散地放着若干个盒子,盒子都平行于墙。桌子的后方是一堵墙。如图所示。现在从桌子的前方射来一束平行光,把盒子的影子投射到了墙上。问影子的总宽度是多少?


输入格式

第1行:3个整数L,R,N。-100000 <=L<=R<= 100000,表示墙所在的区间;1<=N<=100000,表示盒子的个数
接下来N行,每行2个整数BL, BR,-100000 <=BL<=BR<= 100000,表示一个盒子的左、右端点


输出格式

输出仅为一个整数W,表示影子的总宽度。


样例数据

样例输入

1 10 3
3 5
1 4
7 8

样例输出

5


题目分析

统计标记个数(区间修改区间查询)
data直接置1不管懒标记
queryLeft~Right随便乱查
注意要加偏移量
因为C++的负数向0取整,会导致堆式编号出错


源代码

#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<cstdlib>
#include<vector>
#include<cstd
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值