题目描述市议会希望增加主要街道上建筑物的高度以吸引更多商业但担心建设过快会导致资金耗尽因此他们计划分阶段建设。假设街道长度为nnn个单位每个建筑物宽度为111个单位。在每个阶段议会会选择两个端点1≤a≤b≤100,0001 \leq a \leq b \leq 100,0001≤a≤b≤100,000并将区间[a,b][a, b][a,b]内每栋建筑物的高度增加yyy个单位。例如下面是变更前后的城市天际线a2,b10,y1a2, b10, y1a2,b10,y1。随时间推移跟踪建筑物高度变得相当复杂因此需要你的帮助。输入格式输入文件最多包含888个测试用例。每个测试用例的第一行是一个正整数TTT表示指令数量。接下来的TTT行T≤100,000T \leq 100,000T≤100,000是以下两种格式之一B a b y建造指令 —— 将区间[a,b][a, b][a,b]内每栋建筑的高度增加yyy单位。Q a查询指令 —— 输出此时建筑aaa的高度。输入行总是合法的即1≤a≤b≤100,0001 \leq a \leq b \leq 100,0001≤a≤b≤100,000。yyy是正整数最多为1,0001,0001,000。假设在第一个阶段之前所有建筑的高度均为000。输入以T0T0T0结束。输出格式对于每个测试用例的每个查询指令在一行中输出指定建筑的高度。样例输入9 B 5 5 2 B 8 8 2 B 10 13 1 Q 8 B 8 13 1 Q 8 B 15 16 1 B 2 10 1 Q 8 0输出2 3 4题目分析本题的核心是维护一个长度为100,000100,000100,000的数组初始全为000支持两种操作区间加将区间[a,b][a, b][a,b]内的所有元素增加yyy。单点查询查询位置aaa的当前值。直接模拟对于每个B指令遍历区间[a,b][a, b][a,b]逐个增加时间复杂度为O(T⋅n)O(T \cdot n)O(T⋅n)其中nnn为区间长度最坏情况下n105n10^5n105T105T10^5T105总操作量可达101010^{10}1010不可接受。我们需要一种支持高效区间更新和单点查询的数据结构。解题思路差分数组 前缀和差分数组的思想设原数组为height[1..n]\textit{height}[1..n]height[1..n]定义差分数组diff[i]height[i]−height[i−1]\textit{diff}[i] \textit{height}[i] - \textit{height}[i-1]diff[i]height[i]−height[i−1]约定height[0]0\textit{height}[0]0height[0]0。那么对原数组区间[a,b][a, b][a,b]增加yyy等价于diff[a] y\textit{diff}[a] \ ydiff[a]ydiff[b1] −y\textit{diff}[b1] \ - ydiff[b1]−y查询原数组位置aaa的值等价于求diff[1..a]\textit{diff}[1..a]diff[1..a]的前缀和height[a]∑i1adiff[i]\textit{height}[a] \sum_{i1}^{a} \textit{diff}[i]height[a]∑i1adiff[i]这样每次更新是O(1)O(1)O(1)的但查询需要O(n)O(n)O(n)计算前缀和当查询很多时仍会超时。树状数组Fenwick Tree\texttt{Fenwick Tree}Fenwick Tree树状数组支持单点加和前缀和查询均为O(logn)O(\log n)O(logn)。结合差分思想区间加[a,b][a, b][a,b]增加yyy执行两次单点加add(a, y)和add(b1, -y)单点查询aaa执行前缀和查询sum(a)这样每次操作均为O(logN)O(\log N)O(logN)N100,000N100,000N100,000总复杂度O(TlogN)O(T \log N)O(TlogN)完全可接受。算法流程初始化大小为100,002100,002100,002的树状数组因为b1b1b1可能等于100,001100,001100,001。对于每个测试用例读入TTT若T0T0T0则结束。循环TTT次读入指令类型。若为B读入a,b,ya,b,ya,b,y执行add(a, y)和add(b1, -y)。若为Q读入aaa输出sum(a)。每个测试用例结束后重置树状数组或直接覆盖。复杂度分析时间复杂度每个操作O(logN)O(\log N)O(logN)总操作次数T≤105T \leq 10^5T≤105故总复杂度O(TlogN)O(T \log N)O(TlogN)。空间复杂度O(N)O(N)O(N)N100,002N100,002N100,002。代码实现// Kool Konstructions// UVa ID: 12769// Verdict: Accepted// Submission Date: 2026-06-04// UVa Run Time: 0.080s//// 版权所有C2026邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;constintMAX_N100002;intbit[MAX_N];// 树状数组// 单点加voidadd(intidx,intval){while(idxMAX_N){bit[idx]val;idxidx-idx;}}// 前缀和intsum(intidx){intres0;while(idx0){resbit[idx];idx-idx-idx;}returnres;}intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);intT;while(cinTT!0){memset(bit,0,sizeof(bit));// 每个测试用例重置树状数组while(T--){charop;cinop;if(opB){inta,b,y;cinaby;add(a,y);add(b1,-y);}else{// op Qinta;cina;coutsum(a)\n;}}}return0;}总结本题的关键点在于将区间更新转化为差分数组的两个单点更新再通过树状数组维护前缀和。树状数组是实现单点加和前缀和的高效工具代码简洁且常数小。注意边界b1b1b1可能超出nnn因此树状数组大小需要设为n2n2n2。这类“区间加、单点查询”问题是树状数组的经典应用场景。如果问题变为“区间加、区间查询”则需要使用两个树状数组或线段树。掌握差分思想与树状数组的结合可以高效解决许多区间维护问题。
企业数字化 ERP 产品动态
相关推荐
Navicat Premium 17 免费安装教程 Navicat Premium 17 是一款强大的数据库管理工具,支持 MySQL、PostgreSQL、SQL Server、Oracle、MongoDB 等多种数据库。本教程将带你从官方下载、安装、配置到合法激活,安全合规,适合开发者、运维、学生等人群。
一、下载
Navicat Premium… · 2026/10/20 14:18:24
开封中小施工企业负责人必看!特种作业证考试口诀保姆级教程 开封中小施工企业负责人必看!特种作业证考试口诀保姆级教程 你是不是也遇到过这种情况:项目开工前,特种作业人员证还没办齐,领导催得紧,你却不知道到底去哪里报?更怕一不留神被黑中介骗了钱还拿不到证?作为开封中小施工企业的负责人,这些问题真的不是… · 2026/11/11 4:29:28
井下电工证考试视频千万别踩坑,实操考试心里没底怕挂科 井下电工证考试视频千万别踩坑,实操考试心里没底怕挂科 实操考试心里没底怕挂科?你不是一个人。特别是在井下作业这种高风险环境中,井下电工证的考核要求严格,很多人担心自己考不过、挂科,白白浪费时间精力。别再踩坑,跟着这份 井下电工证考试视频… · 2026/11/11 4:29:28
电工作业费收费标准多少钱 之前考的证在外省能不能转过来 电工作业费收费标准多少钱 之前考的证在外省能不能转过来 之前考的证在外省能不能转过来?这几乎是每个准备考电工证或者正在考虑转岗的从业者都会问的问题。尤其是像你在驻马店这样的地方,工作流动性大,不少人都在问: 电工作业费收费标准多少钱… · 2026/11/11 4:29:28
井下电工证考试视频多少钱?实操考试心里没底怕挂科?这篇全讲透 井下电工证考试视频多少钱?实操考试心里没底怕挂科?这篇全讲透 实操考试心里没底怕挂科?别急,你不是一个人。眼下越来越多的工人开始关注井下电工证考试视频,尤其是那些在煤矿、矿井、隧道等作业环境里从事电工相关工作的人员,他们深知这个证书对职业生… · 2026/11/11 4:29:28
鄱阳县电工证报名机构怎么选?全国通用证能让你多接项目 鄱阳县电工证报名机构怎么选?全国通用证能让你多接项目 工地太忙根本没时间复习考试,电工证又快到期了,到底该怎么办?这几乎是每个在鄱阳县从事建筑、安装、维修的电工师傅心里最烦心的事。尤其是现在工程进度紧、任务重,谁还有空天天看书刷题?别急,【… · 2026/11/11 4:29:28
低压电工证河南怎么转?全国通用吗?看完这篇就懂了 低压电工证河南怎么转?全国通用吗?看完这篇就懂了 之前考的证在外省能不能转过来?这是很多河南小伙伴在报考低压电工证前最关心的问题。特别是在商丘、郑州等地,越来越多的打工者和创业者想从事低压电气相关工作,但对证书的通用性、考试流程、岗位风险等… · 2026/11/11 4:28:27
电工证丢失还能补吗?千万别踩坑,丢了证等于失业 电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/10 2:16:10
电力电缆作业证直播报名入口与办理流程良心建议 电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/10 17:46:39
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/10 17:11:43
_中职电工证最新政策解读 中职电工证在哪考?工地太忙根本没时间复习考试的救星来了 工地太忙根本没时间复习考试,这是很多正在备考 中职电工证 的建筑工友的真实写照。你不是不想考,而是真的没时间。但别担心,这期内容是 新乡初次报考人员… · 2026/11/11 0:00:52
昆明电工证培训价格值不值得考?老电工告诉你真相 昆明电工证培训价格值不值得考?老电工告诉你真相 之前考的证在外省能不能转过来?这个问题是很多在外地打工、换城市生活、或者是想在昆明发展的朋友最关心的。尤其是现在云南发展快,很多企业都在招持证上岗的电工,如果你手头有证但不在本地,那这个证是不… · 2026/11/11 0:00:52
特种电缆张工网上查询全攻略:外省证如何转过来 特种电缆张工网上查询全攻略:外省证如何转过来 之前考的证在外省能不能转过来?这是很多特种作业从业者最关心的问题,尤其是像特种电缆张工这类证书,直接关系到日常工作是否合规、能否顺利晋升。很多小伙伴因为证书归属地的问题,陷入职业发展的瓶颈,甚至… · 2026/11/11 0:00:52
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 20:19:29
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 19:22:45
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 17:00:47