欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
S40504.5-4 维护疆域
5-4 维护疆域
维护疆域
矿道的尽头是一扇巨大的铁门,门上刻着Zero的疆域图——整个矿区被划分成很多段,每段有一个驻军数量。Echo说Zero会不断调兵遣将,某一段的驻军可能突然增加或减少。
"要实时知道任意一段的驻军总数。"Echo说,"如果一段一段地加,每次查询都要从头数到尾,太慢了。"
"刷卡记账。"你说,"每次调兵不是在单段上加加减减,而是在两端做标记——起点加,终点减。查询的时候,把前面的标记一路累加,就是当前段的实际驻军。"
"就像……"CC想了想,"借钱和还钱?"
"对。"你说,"你今天借了一百,明天还了五十,后天又借了两百。想知道某天的余额,不需要一笔笔翻账本,只需要把前几天的净变化加起来。"
你开始写。用一个分层计数器维护这些标记——每次在某段起点加、终点减,查询某段的驻军时,把从开头到该段的所有标记累加。累加的过程不需要逐个加,而是沿着分层名册往上爬几层。
屏幕上跳出了结果。第47号段的驻军突然从12变成了47。
"又是47。"CC说。
"第47号段。"Echo说,"那是Zero的核心防线。它在往那里增兵。"
"那我们还去不去?"
"去。"Echo说,"但得快。"
题目描述
个数,支持区间加和单点查询(或区间加和区间查询)。
输入格式
。然后 个数。然后 个操作,每个操作是区间加或查询。
输出格式
每个查询输出结果。
输入样例
5 3
1 2 3 4 5
C 1 3 2
Q 2 4
输出样例
13
13
提示
- 差分思想:区间加等价于在两端做标记。
- 用树状数组维护差分数组,支持单点查询和区间修改。
- 或线段树维护区间和,支持区间加和区间查询。
穿过铁门,是一片由发光石柱组成的广场。石柱排列成一排,高低不一,像是一群沉默的哨兵。Echo说这些石柱是Zero的"图腾"——每根石柱代表一个历史时刻的能量峰值。
"要解读图腾。"Echo飘到第一根石柱前,"找出有多少对石柱可以互相看见——中间没有更高的石柱挡住。"
"咋个找?"CC问,"一个个看?"
"从右往左看。"你说,"每根石柱往右看,能被它看见的石柱必须比它矮,而且中间不能有更高的。这像站岗——矮的站在高的前面,高的挡住后面所有的。"
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |