Live2D

Solution Set -「NOIP Simu.」20221024

A

  给定一棵含有 n 个点的树, 所有点初始时为白色. 再给出 m 个形如 (u,v) 的点对, 要求 uv 的简单路径上存在至少一个黑点. 求最少将多少个点涂黑, 给出一组方案.

  n,m2×106.


  Tag:「水题无 tag」

  随便选个根, 然后递归构造, 能不涂黑就不黑. 可以容易做到 O(n+mlogn), 卡卡常能过. 如果写个四毛子求 LCA 可以做到 O(n+m).

B

  称一棵含有 n 个点, 以 1 为根的有根树合法, 当且仅当对于 u[1,n), 都有 |pupu+1|=1, 其中 pu 表示 u 的父亲, p1=0. 求所有合法树中, 点 k 的孩子数量和. 答案模 998244353.

  n,k2×106.


  Tags:「A.数学-数学推导」「B.模型转化」

  若按标号升序确定每个结点的父亲, 那么点 u 的位置选取只于 pu1 有关. 此时有一个简单的 O(n2) DP: f(i,j) 表示考虑了前 i 个点, pi=j 时合法树的数量, g(i,j) 表示考虑了前 i 个点, pi=j 时点 k 的孩子总数, 可以 O(1) 转移.

  接下来的一步也很自然: 以 f 的转移为例, 设一次转移由 (i,j) 贡献向 (i,j), 此时必然有 ii=1, jj=±1, 转移系数为 1, 因此这就是在坐标轴上画一条折线, f 的值就是某种折线的方案数.

  有了这个观察, 更细致的描述便是: f(i,j) (i>1) 表示从 (2,1) 出发, 走到 (i,j), 仅使用位移 (1,±1), 且不触碰 y=0 的折线数量. 对应的, g 则描述了所有折线于 y=k 的交点数量之和. 我们只需要求出这个和即可.

  直接枚举交点位置 (x,k), (2,1)(x,k) 的方案数就是 Catalan 数, (x,k)(n,) 的方案数是一堆 Catalan 数之和, 其实就是杨辉三角第 n 行上的一段前缀减一段后缀. 如果降序枚举 x, 所求前后缀的长度每次变化量不超过 1, 而组合数行区间和很好递推 --- 将上一行的和 ×2, 再修补边界上常数个值就能得到这一行的和. 这样的递推可以 O(1) 完成. 最终算法复杂度为 O(n).

C 覆 *

  有 n 个集合 S1..n, 初始全空. 给出 m 次操作, 每次操作形如:

  1. 给出 l,r,c, i[l,r], 令 SiSi{c}.
  2. 给出 l,r, 求出 |i=lrSi|.

  n,m105.


  Tags:「A.分治-CDQ 分治」「B.离线」

  被离奇的 32Mib 空限整得胡思乱想, 但你看我没把这事儿写在数据范围里说明其中并不重要 qwq.

  "包含某个元素" 并不好简单表示, 但 "不包含某个元素", 也即是 "处于这个元素的某个空白区间", 再考虑上时间轴, 就是一个三维偏序样的贡献. 用类似 Chtholly Tree 的东西维护每种元素的空白区间, 在空白区间变更时作为三维偏序的事件加入队列. 最后对事件队列做一个 CDQ 分治算出答案即可. 复杂度 O(mlogmlogn).

D

  给定 n, 构造一个 {an}, 使得 ai 恰为 i1{an} 中的出现次数.

  n2×106.


  Tag:「A.构造」

  一道标准的, 写个暴搜就会正解的构造.

  暴搜告诉我们: n=1,2,3,6 无解, 其他 n10 有解; 当 n7 的时候容易看出规律:

a=[n4,2,1,0,,0,1,0,0,0].

结束了. 当然是 O(n) 的.

posted @   Rainybunny  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示