某谷 Rated 比赛泛做

P9534「YsOI2023」广度优先遍历

对于一条非树边,则对应有这两个点的访问顺序的一个偏序,对应到 LCA 的位置就是两条边的偏序。

建出 DAG 拓扑排序即可,时间复杂度 \(O(n\log n)\),可以做到 \(O(n)\) 但没必要,代码鸽了。

*P9535「YsOI2023」连通图计数

非常好题目,爱来自湖南。

\(m=n-1\) 等价于给定度数求树的个数,这是一个经典题,在「HNOI2004」树的计数有描述,即利用 Prufer 序列得到答案为 \(\binom{n-2}{d_1-1,d_2-1,\ldots,d_n-1}\)

\(m=n\) 即基环树,对于整个大环建立一个虚点,该点向环上的所有点连边,环上的点均不连边,则该图变成一棵树,这棵树所有点的点度同样已经确定,可以直接做,最后再乘上环上点的排列顺序。

注意到建立虚点的过程等价于圆方树中方点的建立,也就是说,该题的基本思路是转成圆方树后计数。

\(m=n+1\),分两种情况讨论:

  • 仙人掌:即两个环并不相交,此时同样建立圆方树,则两方点的度数之和可以得知,暴力枚举一边的度数即可知道所有点的度数,从而套用 \(m=n-1\),需要减去两个方点相连的情况,此时只需要将两个点绑成一个点,同样跑 \(m=n-1\) 再乘上一个系数即可,因为两方点本质不同,所以还要除以二。
  • 一个大的点双,同样建立圆方树,跑一遍 \(m=n-1\) 的情况后剩下的就是计算 \(n\) 个点 \(n+1\) 条边的点双个数,注意到此时的点双一定会有两个度数为 \(3\) 的点,去掉这两个点剩下三条链且至多一条长度为 \(0\),可以计算得出答案为 \(\binom{n}{2}\frac{(n-2)!(\binom{n}{2}-3)}{3!}\)

总时间复杂度 \(O(n)\)

Code

*P9500「RiOI-2」tnelat

好的题。

考虑构造 \(px\oplus(py+a)\),这样子可以保证正着余数为 \(a\)

剩下的问题就是保证倒过来,即 \(rev(py+a)\oplus rev(px)\) 余数为 \(b\),即令 \(rev(px)+rev(py+a)\times 10^{len(px)}\equiv b\pmod p\)

容易分参分成左右两边,\(x,y\) 只需分别枚举到 \(10^5\) 即可。

Code

*P9511「STA-R3」大豆

\(b_{k}\)\(a\) \(k\) 次大豆化后得到的序列,记 \(d_k\) 为差分后的序列,则有:

\[\begin{aligned} b_{k,i}& =b_{k-1,i}-\sum_{i=2}^n b_{k,\lfloor\frac{n}{i}\rfloor}\\ d_{k,i}& =b_{k,i}-b_{k,i-1}\\ & = b_{k-1,i}-\sum_{j=2}^i b_{k,\lfloor\frac{i}{j}\rfloor}-b_{k-1,i-1}+\sum_{j=2}^{i-1} b_{k,\lfloor\frac{i-1}{j}\rfloor}\\ & = d_{k-1,i}-\sum_{j=2}^i (b_{k,\lfloor\frac{i}{j}\rfloor}-b_{k,\lfloor\frac{i-1}{j}\rfloor})\\ & = d_{k-1,i}-\sum_{j|i} (b_{k,\frac{i}{j}}-b_{k,\frac i j-1})\\ & = d_{k-1,i}-\sum_{j|i} b_{k,\frac i j}-b_{k,\frac i j-1}\\ & = d_{k-1,i}-\sum_{j|i} d_{k,\frac i j}\\ \end{aligned} \]

\(d\) 可以以 \(O(kn\ln n)\) 的代价预处理出前 \(n\) 项,故类杜教筛暴力计算复杂度即是对的,需要调参。

Code

posted @ 2023-08-14 09:20  cnyz  阅读(52)  评论(0编辑  收藏  举报