IOI2025集训队互测 W3
Day7(20241029)
卡了一场 T2,结果还是 MLE 了,我不懂得欣赏。
T1 Cyberangel
我们考虑按照值域从小到大依次加入每一个数,发现需要处理的就是当前所有的区间的最大值之和为多少。
由于所有的区间这个信息不太好处理,所以我们考虑分治处理,对于所有
我们还是从小到大依次加入每一个数,或者说其余的所有数认为是
如果
如果
我们加入一个数
- 将
左侧所有的后缀最大值的贡献删去。 - 将右侧所有
被影响的权值进行修改。 - 加入
的权值。
其中 1 和 3 可以被认为是单调栈上的操作,可以进行暴力修改,复杂度是
这样单次的复杂度为
T2 新生舞会
你说得对,但是 🤓👆。
这是一个公平组合游戏,所以我们考虑直接计算
如果这一次决策选择删掉的点是
我们对于每一个节点维护其后继状态的
这个过程可以使用 01Trie 合并来实现,朴素实现的时间复杂度为
但是这题卡空间……
优化线段树合并形问题的空间的方法一般就两种:
- 写压缩线段树。
- 在优先遍历重儿子的情况下写节点回收。
这两种情况需要的节点数似乎都可以证明是
但是 dfs 有很大的空间尝试,仍然可能会导致 MLE,所以我们通过手写栈来代替 dfs 即可。
T3 PM 大师
不难发现会存在一个集合
我们考虑子任务 5,每一个数只会被加入一次。对于一个数
那么我们每一次加入的时候,判断如果删掉
我们可以使用线段树维护
注意到加入只会对
我们仿照
时间复杂度仍然为
Day8(20241101)
本来以为 T2 有什么高论的,结果是我想多了。
T1 熟练
由于路径有很强的性质,可以通过多种方式证明答案就是被最多路径覆盖的节点被覆盖的次数。
现在考虑构造,对于链的情况,我们发现可以直接使用如下方式构造:从左到右扫描整条链,每当遇到一条路径时,给其分配一个没有节点占用的颜色,这条路径占用这个节点;当离开一条路劲时,将其占用的路径还原。由于不可能在同时占用所有的颜色的时候加入路径,所以无论何时有一定存在没有被占用的颜色。
考虑拓展到树上,先将所有的路径拆成
考虑这个过程的逆过程就是将儿子合并,这是可以用线段树合并时间的,我们仿照线段树合并按照 dfn 序进行分裂即可。时间复杂度
T2 皮鞋的多项式
发现就是要求子树的所有多项式的乘积的一段系数的和。
发现暴力维护每一个位置的
这样在合并的过程中,
T3 幽默还是夢
Day9(20241103)
最后两个小时冲 T1 去了,结果 T1 这么不可做,直接倒闭了。
T1 游戏
T2 木桶效应
发现我们要统计
交换枚举顺序,那么我们就变成了枚举数列
先考虑
则有转移
对于
我们记有
不难得到如下转移:
暴力枚举
发现转移的所有系数都可以拆成之和
T3 月亮的背面是粉红色的
发现
发现
其等于
那么现在的问题就变成了求
后两个 Subtask 似乎需要使用某个单次求解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】