2017 Chinese Multi-University Training, BeihangU Contest

链接

A B C D E F G H I J K L
\(\color{green}{\texttt{+}}\) \(\color{green}{\texttt{+2}}\) \(\color{green}{\texttt{+3}}\) \(\color{red}{\texttt{+1}}\) \(\color{gray}{\texttt{+}}\) \(\color{gray}{\texttt{+3}}\) \(\color{green}{\texttt{+}}\) \(\color{gray}{\texttt{+}}\) \(\color{gray}{\texttt{+}}\) \(\color{gray}{\texttt{+}}\)

A. Add More Zero

K. KazaQ's Socks

B. Balala Power!

L. Limited Permutation

签到题。

C. Colorful Tree

赛时想了一个很 simple 的做法:考虑点分,每种颜色分开处理贡献,一个点有贡献当且仅当其到点分中心路径上没有同色点。贡献可以通过容斥算出。复杂度 \(O(n\log n)\),卡一卡常可以通过。

标算给的是对每种颜色维护一个序列表示所有该颜色对应子树和,dfs 过程中维护。

F. Function

手模一下可以发现 \(a\) 中每个置换环需要映射到 \(m\) 中一个置换环,并且环长是倍数关系。

\(m\) 里所有的环长找出来,可以求出 \(n\) 的每个长度的置换环可行匹配数,相乘即可。

H. Hints of sd0061

毛估估一下可以发现 \(b\) 总共只有 \(O(\log n)\) 个取值。并且所有本质不同询问的和是 \(O(n)\) 的。所以直接调用库函数的 nth_element ,由于 \(a\) 数组是随机的,能期望在 \(O(n)\) 时间解决。

J. Journey with Knapsack

首先额外 \(m\) 物品先不管,假如前面的物品总大小为 \(i\) 的方案数为 \(f_i\),那么最后就是 \(\sum f_{2n-b_i}\)

对于前面的部分,考虑生成函数:

\[F(x)=\prod_{i=1}^{n}(1+x^i+x^{2i}+\cdots+x^{a_ii}) \]

\[=\prod_{i=1}^{n}\left(1-x^{i(a_i+1)}\right)\prod_{i=1}^{n}\frac{1}{1-x^i} \]

前面的式子只有 \(O(\sqrt n)\) 项有值,直接暴力卷上去即可。后面是经典的拆分数,可以直接用五边形数处理,然而事实上可以直接根号分治,对于前 \(O(\sqrt n)\) 暴力 dp,对于后面整体转移 \(O(\sqrt n)\) 遍即可。

复杂度 \(O(n\sqrt n)\)

I. I Curse Myself

首先把所有环取出来,每个环可以删一条边。这样问题转化成:给定若干组物品,每组选恰好一个,问第 \(k\) 大的选择是什么。

一个显然的想法是直接将每组物品排序,用 \(n\) 元组 \((i_1,i_2,\cdots,i_n)\) 表示每组物品的最大值,每次取出最大的物品然后每组物品分别向后增广 \(1\),可以得到 \(n\) 个可能的待选值。这样时间复杂度是 \(O(nk)\),但是空间也是 \(O(nk)\),不大行。

考虑换种思路,依次处理每组物品,维护一个堆表示此时前 \(k\) 大的物品。转移的时候类似记录,复杂度 \(O(nk\log n)\),空间 \(O(n+k)\) 的。事实上仔细分析可以发现设 \(c_i\) 为第 \(i\) 个环长,复杂度为 \(O(k\sum\log c_i)=O(k\log(\prod c_i))=O(k\log 2^n)=O(nk)\)

D. Division Game

由于所有石子堆是相同的,令 \(f(x)\) 表示一堆石子取 \(x\) 次后恰好取完的方案数。可以发现无论何时都可以将一堆石子取至一颗,所以 \(x\) 次没有取完的方案数就是 \(f(x+1)\)。这样对于第 \(i\) 堆石子的答案就是 \(f(x+1)^{i-1}f(x)^{k-i+1}\)

考虑求出 \(f\)。相当于是有 \(m\) 堆石子,第 \(i\) 堆是 \(e_i\),每次至少取一颗,问 \(x\) 次取完的方案数。

如果没有每次至少取一颗的限制,方案数可以对每堆石子分开计算,即:

\[g(x)=\prod_{i=1}^m\binom{e_i+x-1}{x-1} \]

对于每次至少取一颗的限制可以容斥,得到式子为:

\[f(x)=\sum_{i=0}^{x}(-1)^{x-i}g(i)\binom{x}{i} \]

\[f(x)=x!\sum_{i=0}^{x}\frac{(-1)^{x-i}}{(x-i)!}\frac{g(i)}{i!} \]

这可以看作卷积,而 \(985661441\) 恰好是 NTT 模数。设 \(n=\sum e_i\),复杂度 \(O(n\log n)\)

posted @ 2021-11-03 20:00  Flying2018  阅读(68)  评论(0)    收藏  举报