• Solution Set 「NOIP Simu.」20221024


    \(\mathscr{A}\sim\)

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

      \(n,m\le2\times10^6\).


      Tag:「水题无 tag」

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

    \(\mathscr{B}\sim\)

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

      \(n,k\le2\times10^6\).


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

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

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

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

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

    \(\mathscr{C}\sim\) 覆 *

      有 \(n\) 个集合 \(S_{1..n}\), 初始全空. 给出 \(m\) 次操作, 每次操作形如:

    1. 给出 \(l,r,c\), \(\forall i\in[l,r]\), 令 \(S_i\gets S_i\cup\{c\}\).
    2. 给出 \(l,r\), 求出 \(\left|\bigcup_{i=l}^rS_i\right|\).

      \(n,m\le10^5\).


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

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

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

    \(\mathscr{D}\sim\)

      给定 \(n\), 构造一个 \(\{a_n\}\), 使得 \(a_i\) 恰为 \(i-1\)\(\{a_n\}\) 中的出现次数.

      \(n\le2\times10^6\).


      Tag:「A.构造」

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

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

    \[a=[n-4,2,1,0,\dots,0,1,0,0,0]. \]

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

  • 相关阅读:
    【个人杂谈】MacBook Pro的使用心得
    【网页加速】lua redis的二次升级
    使用Openresty加快网页速度
    中间件——canal小记
    Java面试总结(二)
    RedissonLock分布式锁源码分析
    面试总结
    Spring AOP小记
    谈谈个人网站的建立(八)—— 缓存的使用
    Kafka、Logstash、Nginx日志收集入门
  • 原文地址:https://www.cnblogs.com/rainybunny/p/16822078.html
Copyright © 2020-2023  润新知