欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
S40502.5-2 约化区间
5-2 约化区间
约化区间
G-30矿道的中段,墙壁上嵌着一排能量感应器——每隔十米一个,像一串发光的纽扣。每个感应器显示一个数字,代表那段矿道的能量密度。
"Zero用能量密度来监控矿道的健康度。"Echo飘到感应器前,"正常情况下,所有段的能量值有一个共同的最大公约数——那是Zero设定的基准。如果某一段的能量值和其他段不再共享这个公约数,说明那里出了问题。"
CC沿着感应器走了一圈,金属靴底踩在冰晶上发出细碎的爆裂声:"咋个找这个公约数?"
"不是找一个。"你说,"是维护所有段的公约数。每次修改一个段的能量值,都要重新计算整个区间的公约数。"
"那不是很慢?"
"分段记账。"你说,"把矿道分成很多小段,每段的账目单独存。查询整条矿道的账目时,只需要把覆盖那几段的账目合并——两个数的公约数再和第三个数求公约数,一层一层往上报。"
你开始写。先建一本分层台账,每个节点存对应区间的公约数。修改一个点的能量值时,从那一页往上翻,每一级重新算两个子节点的公约数。查询一个区间的账目时,找到覆盖该区间的几页,合并它们的值。
屏幕上跳出了结果。第47号感应器的能量值被修改后,整个矿道的基准公约数从12变成了1。
"1?"CC瞪眼,"那不是没有公约数了?"
"说明第47号感应器出了问题。"Echo说,"那里的能量值和周围格格不入。"
"就像……一个叛徒。"CC说。
Echo没说话。但她的投影在47号感应器前停了很久。
题目描述
个数,支持单点修改和区间GCD查询。
输入格式
。然后 个数。然后 个操作,每个操作是修改或查询。
输出格式
每个查询输出区间GCD。
输入样例
5 3
1 3 5 7 9
Q 1 5
C 1 2 2
Q 1 5
输出样例
1
1
提示
- 线段树维护区间GCD。
- 修改时从叶子往上更新,父节点重新计算子节点的GCD。
- 查询时合并覆盖区间的节点的值。
矿道深处的天花板上,嵌着一幅星空图——不是真的星星,是Zero在火星轨道上部署的监控卫星。每个卫星有一个扇形扫描区,覆盖地面上一段区域。
"要统计某个矩形窗口里有多少颗卫星。"Echo说,"不是一颗一颗数——是用推窗法,从左推到右,一路上登记和注销。"
"推窗?"CC问。
"就像拉窗帘。"你说,"窗帘从左往右拉,遇到一颗星星就记下来,遇到窗口的右边界就把这颗星星划掉。同时维护一个y轴上的名册,随时查当前窗帘里有多少颗星星。"
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |