Solution Set -「NOIP Simu.」20221024
断
给定一棵含有 个点的树, 所有点初始时为白色. 再给出 个形如 的点对, 要求 到 的简单路径上存在至少一个黑点. 求最少将多少个点涂黑, 给出一组方案.
.
Tag:「水题无 tag」
随便选个根, 然后递归构造, 能不涂黑就不黑. 可以容易做到 , 卡卡常能过. 如果写个四毛子求 LCA 可以做到 .
数
称一棵含有 个点, 以 为根的有根树合法, 当且仅当对于 , 都有 , 其中 表示 的父亲, . 求所有合法树中, 点 的孩子数量和. 答案模 .
.
Tags:「A.数学-数学推导」「B.模型转化」
若按标号升序确定每个结点的父亲, 那么点 的位置选取只于 有关. 此时有一个简单的 DP: 表示考虑了前 个点, 时合法树的数量, 表示考虑了前 个点, 时点 的孩子总数, 可以 转移.
接下来的一步也很自然: 以 的转移为例, 设一次转移由 贡献向 , 此时必然有 , , 转移系数为 , 因此这就是在坐标轴上画一条折线, 的值就是某种折线的方案数.
有了这个观察, 更细致的描述便是: 表示从 出发, 走到 , 仅使用位移 , 且不触碰 的折线数量. 对应的, 则描述了所有折线于 的交点数量之和. 我们只需要求出这个和即可.
直接枚举交点位置 , 的方案数就是 Catalan 数, 的方案数是一堆 Catalan 数之和, 其实就是杨辉三角第 行上的一段前缀减一段后缀. 如果降序枚举 , 所求前后缀的长度每次变化量不超过 , 而组合数行区间和很好递推 --- 将上一行的和 , 再修补边界上常数个值就能得到这一行的和. 这样的递推可以 完成. 最终算法复杂度为 .
覆 *
有 个集合 , 初始全空. 给出 次操作, 每次操作形如:
- 给出 , , 令 .
- 给出 , 求出 .
.
Tags:「A.分治-CDQ 分治」「B.离线」
被离奇的 空限整得胡思乱想, 但你看我没把这事儿写在数据范围里说明其中并不重要 qwq.
"包含某个元素" 并不好简单表示, 但 "不包含某个元素", 也即是 "处于这个元素的某个空白区间", 再考虑上时间轴, 就是一个三维偏序样的贡献. 用类似 Chtholly Tree 的东西维护每种元素的空白区间, 在空白区间变更时作为三维偏序的事件加入队列. 最后对事件队列做一个 CDQ 分治算出答案即可. 复杂度 .
构
给定 , 构造一个 , 使得 恰为 在 中的出现次数.
.
Tag:「A.构造」
一道标准的, 写个暴搜就会正解的构造.
暴搜告诉我们: 无解, 其他 有解; 当 的时候容易看出规律:
结束了. 当然是 的.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现