Solution Set -“似一捧细泉的奔逃”
0.「OurOJ #47912」优美的分配方案
Private link & Submission (忘交了).
给定含有 个点 条边的简单无向图 , 将 分配给 条边作为边权. 求所有前 条边恰为 MST 的 的 MST 边权和之和.
.
- 「A.DP-计数 DP」「A.数学-组合计数」
想看 GF 的可以散了, 都说了兔是组合意义选手. (
不难转化成: 有 个空位 (权值) 排成一行, 要填入 个球 (边), 对于球 , 有限制集合 , 表示 内的所有球必须在 之后, 注意有 . 求所有合法方案中, 前 个球的位置标号和.
先来想想怎么求合法方案数. 作为一个成熟的组合意义选手, 我们可以很快构造一个等价合法且不重不漏的放球规则. 令 表示 内填了 , 内填了所有可填的数 (记为 ) 的方案. 枚举一个 加入 , 我们先将 填入最左侧的空位, 再随便选 的位置即可. 因此
怎么表示权值呢? 作为一个成熟的组合意义选手, 我们首先发现 "标号和之和" 只有加法, 可以分开算贡献. 标号还是转化成方案更好算, 自然想到用特殊球标记球 前的一个位置, 就能将球 的标号转为方案. 具体地, 我们新增一个空位和一个特殊球. 标记特殊球是否被放置. 不涉及特殊球放置的转移是一样的:
如果放特殊球, 规则为: 先将特殊球前置, 再将 前置, 最后乱选其他球. 此时特殊球会对 个 贡献, 需要额外乘系数. 因而
答案即 . 复杂度 .
1.「OurOJ #47927」海之女仆
假设一个有重力的二维世界, 和 处是无穷高的山, 处下方有 体积 (还是别叫面积, 有点怪) 的山, 山上有 体积的水. 求至少削掉多少体积的山头, 才能让所有水域连通. 求出答案下确界.
数据组数 , , , 绝对精度要求 .
- 「A.分治-二分答案」「B.贪心」「C.性质/结论」
被 T1 卡了, 没发现 T2 不难, 走投无路把 T3 一眼了. () 不过锤标算的做法还是挺有意思的.
显然最终海平面关于最小费用具有单调性, 可以二分海平面 . 细节之处在于二分后的贪心.
考虑最终山的状态: 左右原本就有未被水淹没的山, 我们一开始就能忽略它们; 左右还有一些山高于海平面, 它们肯定无法被淹没, 所以不必被削平, 只需要削出一个峡谷状的山脉 (即, 左边削成前缀最小值, 右边削成后缀最大值), 让水洼里的水流入海中; 除去这些山, 剩下的都是海底山脉, 把高出海平面的山恰好削到海平面即可. 这是削去体积最小的策略, 自然也是水量需求最小的策略. 我们只需要检查所有水能否填满海平面以下的空间即可.
复杂度 .
2.「OurOJ #47950」中档题
Private link & Submission (忘记交 OJ, 现在交不了啦).
给定序列 , 生成一棵树, 对于 , 的父亲在 中正比于 值随机生成, 边权为两端点 点权和. 询问 次两点距离期望. 答案模大素数.
.
- 「A.DP-概率/期望 DP」「A.数学-生成函数」
兔是一个组合意义选手, 所以也许她写出来的题解巧妙了你一脸, 但她自己也得酝酿很久. (
「方法一」 本来尝试常规思路, 枚举 LCA, 求形如 的东西, 但是发现事件独立性的讨论挺烦人的, 我们不妨换个思路: 对 一起向 LCA 爬树的过程求解.
不妨设 , 注意到 在跳到 之前一定不会与 相遇, 且经过边权显然和 无挂. 方便起见, 我们只算路径上除 外的点权和期望. 记 , 对于 , 是 的祖先的概率显然是 . 因而 爬到 之前经过的点权期望为 . 令 , 该期望即 .
剩下的爬树过程? 一定处于 "爬到 中某一点" 这个状态, 实际上只有 一个变量, 可以 DP 了. 令 表示此时还需要经过的点权期望. 枚举 落在 中的位置, 可知
中间的东西拆开求前缀和即可. 线性求逆元可以做到 . (
「方法二」 去问 crashed 他的做法的时候发现是原题, 然后找到了自己的题解 (大嘘). 这是求 LCA 的方法. 不知道为什么考场上觉得这个有问题, 大概是写错了?
「方法三」 然后这个是 crashed 的方法, 可以看出兔和蛋的数学偏好差异. (
还是算点权和, 不妨设 . 令 表示以 为 LCA 时, 路径出现概率关于其点权和的 GF. 那么
注意 是上一步的分子, 是下一步的分母. 这里 是特殊情况, 当 时, 直接的点既可以被 爬到, 也可以被 爬到, 所以要复杂一点:
最终答案即 . 导一导算一算即可, 也是线性的.
3.「OurOJ #47933」坐标
给定 个 上的点 , 构造正整数序列 和向量阵 , 要求 , , 且 .
, .
- 「A.构造」
一道有意思的构造题, 不过 这个实际上没有用的观察还是太迷惑人了.
判无解: 奇偶性不同则无解, 很显然.
如果是在数轴上构造? 简单的想法是构造一列 , 然后让对每个点贪心地向 靠近. 不过这样的分别构造的思路很容易被否定: 容纳不了点的信息! (不过这个判断会被 迷惑, 可恶啊).
由此, 第一个 motivation: 同时构造两维坐标.
不妨令 , 我们最终可以对它们进行一些加减, 最终让它们变为 .
再试试二进制构造? 我们很快发现, 因为不能让提供一个 bit 两次 (不然和分开构造没有区别), 则当 含有同一 bit 时, 将会很难处理.
由此, 第二个 motivation: 保持 的 bit (或某一特定 bit) 不同时为 .
例如, 保持最高 bit 不同. 归纳地, 我们可以先用 作用于较大者, 并从 开始考虑. 设当前的 , , 则我们对 操作, (并不关心符号), 注意到此时低一位仍然满足条件. 特别地, 处需要用两个 调整. 最终至多使用 步完成构造. (如果要求 说不定还简单一点.)
4.「OurOJ #47935」上升
给定一棵含有 个结点的带点权树. 删除一个结点及其邻接边, 最小化在剩下的森林中, 所有简单路径对应点权序列的 LIS 长度最大值. 求出这一最小化的最大值.
.
- 「A.树论-长链剖分」「B.Tricks」
考完给 Walking_Dead 传授正解, 突然发现这算是一个比较有意义的 trick.
取出一条包含全局 LIS 的路径 , 显然, 最优删除位置在这条路径上.
"枚举树上的点" "枚举路径上的点", 在遍历枚举点 的邻接连通块求答案时, 这个连通块一定是 为根时的某棵子树, 或者 为根时的某棵子树. 仅仅用这个性质, 我们就能规避换根, 而只需要求子树答案了.
接下来的工作挺简单. 长剖, 维护子树内 LIS 末尾最小值和 LDS 末尾最大值, 处理一次. 先以任意点为根求全局答案, 取出一个 , 再以 为根求子树答案顺便取出一个 , 最后以 为根求子树答案. 然后枚举 求最终结果即可. 复杂度 .
5.「OurOJ #47947」数划分
给定序列 , 求将 划分为连续不交区间的方案数, 使得每个划分区间 都有 . 答案模大素数.
.
- 「A.分治-CDQ 分治」「A.启发式合并/分裂」
题不难, 只是记录一下兔犯傻的过程.
尝试序列 DP. 令 表示划分 的方案数. 对于固定的 , 枚举最后一个区间的左端点 , 则其需要满足
自然的想法是考察合法 的单调性. 分别考虑 和 两种情况. 注意到当 不断减小时, 前者存在单调性而后者不存在. 怎么办呢?
兔傻就傻在, 把 转化成 之后, 忘记了原本 "最值" 的可枚举性. 既然有一个东西不单调, 我们直接对这个条件启发式分裂做 CDQ 就行了. 这里就直接对区间最大值启发式分裂, 在跨中心转移时, 前一个条件可以枚举端点后二分, 后者仅仅是对转移端点进行一个常量的限制, 很好处理. 那么就 无脑完成了. 当然, 存在 的解法.
6.「OurOJ #47954」数区间集
给定序列 , 求 .
, 保证任何一个数在 中出现不超过两次.
- 「A.扫描线」「C.性质/结论」
难点大概是设计一个去重策略, 除此之外都很清纯.
对于 , 若 在另一个位置 出现, 则令 , 否则令 . 我们首先计数这样的区间 : , 也即使关于出现集合的极长区间. 扫描线轻松实现. 虽然这样算还是会重, 不过我们得到了一个重要的条件: 若极长区间 出现集合相同, 则这两个区间不交且不邻, 证明显然.
发现了这个性质, 后续对算重的区间的描述就变得清晰了. 对于极长的 , 若其被重复计数, 则必然满足 , 不交不邻 (逆用结论), 且它仅在 处被算重一次. 对这种东西的维护实在是经典: 扫描 , 在 处维护 , 线段树维护区间最小值和出现次数, 单调栈维护最值并对应地区间加减即可. 不邻的条件在最大值栈上二分一下就行.
两部分复杂度都是 .
7.「CF 1770F」Koxia and Sequence
Link & Submission.
对所有 , ( 为按位或), 求 异或和的异或和.
, , .
- 「A.数学-数学推导」「C.思维」
精巧的转化! 这种步步手筋的题真的厉害.
明显, "异或和" 指向奇偶性, 而方案数里必然涉及组合数, 它们共同指向 Lucas 定理. 这是破题关键.
首先, 若枚举异或和的贡献 bit , 要求 出现奇数次, 且方案数为奇数. 则出现次数 又 . 所以 时答案为 . 以下考虑 的情况… 先别急, 奇数 减去 就是偶数, 这意味着当 固定时, 后续 对答案的总贡献也为 . 最终只需要考虑 时 的贡献.
现在, 摆在面前的有 和 两个限制. 相对来说, 后者是一个集合形式的要求, 方便容斥. 设 表示 ( 表示二进制表示下的子集关系) 时的答案, 就有
异或和, 位独立! 又有
而 是可枚举的, 我们只需要求出每个 .
列出式子:
, 后者连乘是单纯的逻辑与, 前者连乘可是妇孺皆知的可算! 右向左变形, 代入得:
计算即可.
8.「洛谷 P5172」Sum
Link & Submission.
给定 组 , 分别求出 .
, , .
- 「A.数学-类欧几里得」「A.数学-数学推导」
只考虑 非完全平方数的情况.
令 , 则
来推导 , 有点类似类欧, 需要一点讨论. 当 时,
当 时:
不好办了. 为了让递归进行, 我们猜测恒有 的形式. 对 继续化简:
综上呐,
复杂度是 喵? 不太会算.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2022-02-09 Solution Set -「LOCAL」冲刺省选 Round XII