【题解】CF1609 Deltix Round, Autumn 2021 (Div. 1 + Div. 2)
三棵线段树。
A#
将每个数表示成 ,其中 是奇数,显然最后一顶找到一个最大的 将所有的 都乘过去即可。
代码:Submission #137565948 - Codeforces
B#
一次操作最多消除一个 abc
也一定消除一个 abc
,维护 abc
出现次数即可。
代码:Submission #137566109 - Codeforces
C#
考虑一个点往后跳,仅跳 和质数跳到的第一个质数所处的位置,然后再看这个位置往后跳能跳多少个 就行。这两个东西倒着推很好求。
代码:Submission #137567001 - Codeforces
D#
一个连通块可以连成一个菊花,合并两个连通块需要一条额外边。记录额外边的个数,并且维护连通块大小,每次选最大的若干个连通块合并即可。
代码:Submission #137567369 - Codeforces
E#
考虑 dp:令 表示到 接了长度为 的子序列最小花费代价。转移显然,用线段树维护即可。
代码:Submission #137568052 - Codeforces
F#
考虑建立小根笛卡尔树和大根笛卡尔树。当左端点取到 时,很容易求得如果此时要求答案区间最小值为 的话,右端点应当取到的区间。最大值同理。
将所有数按照 分组,每一组分别计算答案。如果一个可能的右端点被最大值右端点合法区间覆盖过,并且被最小值右端点合法区间覆盖过,那么可取。因为最大值右端点合法区间互不相交(最小值合法区间同理),用线段树维护覆盖次数,当覆盖次数为 则意味着合法。时间复杂度 。
代码:Submission #137566518 - Codeforces
G#
注意到最终序列长度为 。将两个序列差分,除了 必须在开头外,剩下的一定是从小到大排序更优。因为题目保证 差分后除去开头满足单调不减,所以用线段树维护 ,每次询问考虑插入 的每一个位置计算贡献即可。时间复杂度 。
代码:Submission #137569481 - Codeforces
H#
不会。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何做好软件架构师
· 记录一次线上服务OOM排查
· Linux实时系统Xenomai宕机问题的深度定位过程
· 记一次 .NET某汗液测试机系统 崩溃分析
· 深度解析Mamba与状态空间模型:一图带你轻松入门
· 如何做好软件架构师
· 记录一次线上服务OOM排查
· SQL优化的这15招,真香!
· [.NET] 单位转换实践:深入解析 Units.NET
· 将 EasySQLite 从 .NET 8 升级到 .NET 9