Solution Set #9
在 cdqz 的集训结束了,虽然总榜比较好看但感觉只过了一堆平凡题。
怎么一个月就省选了(恼)
upd:更得好像有点少,下周的直接往里面加算了。
150【IOI2016】shortcut(拆绝对值)
考虑确定了架桥架在哪里之后怎么算(经过桥的)直径。实际上就是
大力转切比雪夫(大概)然后二分,先排除
提交记录 #674333 - Universal Online Judge (uoj.ac)
151【IOI2016】messy(交互,分治,构造)
考虑一个构造:传一个
实际上你也可以传一个集合过去,在
问题是每个数只能传一次。所以假设我们上次传过去的集合是
大力二进制分组,可以得到
提交记录 #674659 - Universal Online Judge (uoj.ac)
152【IOI2017】Ancient Books(贪心,析合树)
考虑
容易构造出
然而换块未必需要
写上去发现只过了
不太懂析合树,瞎写了个东西/kk。
提交记录 #674659 - Universal Online Judge (uoj.ac)
153 IOI 2017 Toy Train(博弈,图论)
考虑只有一个充电站,且充电站是自环怎么做。可以 BFS 出所有 Arezon 能保证到充电站的结点。
考虑只有一个充电站怎么做,按上面 BFS 之后,如果 Arezon 控制充电站且存在出边对应结点能到充电站,或者 Borzon 控制且全部出边都能到充电站,那么能到的就是合法的,否则答案为空集。
考虑多个充电站,那么 BFS 多次,如果一个充电站不满足上面条件那么一定不会去这个充电站充电,那么把这个充电站删掉,重复
提交记录 #674949 - Universal Online Judge (uoj.ac)
154 IOI 2017 Simurgh(交互)
可以
拓展到正解:如果我们只询问生成树上边的信息,那么我们就可以选择一个无环的边的子集,并询问子集中是否有关键边,然后通过二分技巧找到所有关键边。关键在于把原图拆成尽可能少的生成森林,一个构造是:找到一个点和它相连的所有边,这样可以拆出来
https://uoj.ac/submission/675475
155 CTT2019 匹配问题
考虑钦定了选
考虑利用 Hall 定理判断。可以得到
利用这
注意到限制中长度大于
对于这类限制,
https://qoj.ac/submission/317897
156 qoj5017. 相等树链
对第一棵树点分治转化问题。
关键在于:如何找到一个条件判断跨过分治中心的路径
此时条件转化为集合相等的形式,可以利用 xor-hashing 的技巧给出进一步转化。那么枚举第二棵树中的其中一条链,计数另一条链的方案数,那么我们需要枚举删去的直径端点,求出
https://qoj.ac/submission/318292
157 qoj5016. Range Minimum Element
和 AGC056B 一样,构造一个填数方式和
为了保证是一一映射,我们钦定当前填的最小值是所有可能的最小值位置中最靠前的。也就是说,假设我们根据
假设
还有
https://qoj.ac/submission/318493
因为以为条件是集合相等所以代码中包含了神秘 xor-hashing。
158 loj4039. 「SNOI2024」矩阵
注意到一次旋转之后,不在矩形边界上的点四个方向相邻的点是不变的,但是顺序会旋转 90 度。考虑维护一个十字链表。
问题在于如何维护旋转,那么对每个数再维护一个值
矩形加同理,仍然考虑差分即可。
159 loj7905. Ticket to Ride
问题和如下问题等价:
取出序列中不相交的
段,每段贡献为完全包含在区间内的区间权值之和,最大化 段的权值和。
以段数为阶段,每个阶段的转移相当于维护数据结构支持:
- 前缀加。
- 查询前缀
。
注意到前缀
总复杂度为
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】