KTXY Round 1 官方题解
2026-03-02 19:23:19
发布于:河南
T1
经典 trick,将 转化为 ,继而变成 。由于 ,所以考虑暴力枚举 。右式两个值均为整数,可以再次暴力枚举左式的约数当作 ,检查式子是否合法。
时间复杂度 。
T2
不难发现答案 。分类讨论一下。
-
答案为 ,直接判断即可。
-
答案为 ,发现连接 一条边之后,相当于可以对 这段区间中的数进行循环移位,所以找到第一个不满足 的和最后一个不满足 的位置,将这段区间进行循环移位,判断能否合法即可。
-
剩下的答案为 ,这里给出一种构造:发现若能构造出能交换相邻两个数的操作,则整个序列一定可以任意排列。故连接 ,设要交换 ,根据答案为 中的结论,总可以进行循环移位将这两位移到开头,所以不妨假设交换的相邻的两个数为 ,下文设 为空位, 为初始位置 的数,当 时,可以进行如下操作:
此时成功构造出来交换相邻两个数的操作,于是证明答案 。
时间复杂度 。
T3
先钦定节点 为根,即定根怎么做。
可以设计出来一个简单的 dp, 表示以 为根的子树中有 个小型信标的方案数。
转移分为两种,一种为当前节点选择小型信标,即 ;另一种就是正常树上背包合并:设当前与儿子 合并,则有 。初值有 。滚动数组倒着枚举 。
设 为以 为根的子树,不妨将上面的 dp 转移时间放大,即每次合并时间为 ,则总时间为 ,问题为求出 。考虑每个点都会造成自己祖先个数的贡献,所以总时间复杂度上限为 。其中, 为树高。由于保证数据随机,在这种随机生成树的情况下,树高期望为 ,所以时间复杂度即为 。
对于每个根来说,dp 一次的时间复杂度是 的,于是做到了 。发现对于相邻的根来说,很多节点的 值都没有改变,所以考虑换根 dp。
假设当前根为 ,要将根换到 上,考虑处理三件事:
- 将 对 的贡献从 中退下。合并时是倒着枚举 ,退下贡献时则正着枚举 。即 ,由于 ,所以分母可以直接去掉,这样使用 的时间就可以将 对 的贡献退下。
- 将 合并到 上,由于贡献已经退下,直接合并即可。
- 回溯是再将 复原,可以考虑先备份 数组。
换根的时间复杂度分析跟背包合并分析相同,总时间复杂度 。
T4
发现左端点一定为前缀 ,右端点一定为后缀 。将这些端点进行重编号,考虑对中间的每个点 算贡献,其会对 的左端点和 的右端点产生贡献。由于前缀 和后缀 都具有单调性,二分找出临界端点,相当于对 的矩形加 ,最后查全局 。扫描线加线段树维护即可。
全部评论 6
orz
但是 题有 发 AC 是不是有些离谱了()还是某省二大佬只是在开摆()2026-03-03 来自 广东
2orz
2026-03-03 来自 浙江
1省选模拟赛题解来了
2026-03-02 来自 浙江
1orz
2026-03-02 来自 江苏
1ORZ
2026-03-02 来自 浙江
1orz
2026-03-02 来自 广东
1






























有帮助,赞一个