20230220模拟赛题解

Algebra Problem - P9007

原题

虽然题名叫 algebra 但这实际是个数论题。

\(z|y,z|x-y\)\(z|x,z|y\),于是设 \(x=pz,y=qz\ (p,q\in \Z)\)

带入进去可以发现

\[\begin{equation*} \begin{cases} p-q=(n-1)! \\ p(z-1)=(n-1)(n-1)! \\ \end{cases} \end{equation*} \]

,发现每个 \(p\) 一定对应唯一的 \(q\),且合法 \(p\) 的个数就是 \((n-1)(n-1)!\) 的因子数,预处理 \(n!\) 因子数然后每次把 \(n-1\) 分解质因数后算乘上之后因子数的变化即可。

Basic Problem - CF704B

原题

先简化一下权值的函数,令 \(a_i=a_i+x_i,b_i=b_i-x_i,c_i=x_i+x_i,d_i=d_i-x_i\),于是有

\[f(i,j)=\left\{ \begin{array}{**lr**} d_i+a_j,i<j& \\ c_i+b_j,i>j\\ \end{array} \right. \]

,然后是一个经典的 trick,\(f_{i,j}\) 表示从小到大放前 \(i\) 个数,组成 \(j\) 个连通块的最小权值。每次新加进来一个数,可以让它单成一段,接在之前一段的尾或头,或是连接两段。最后强制只分一段即可。

Constructive Problem - CF1391E

原题

首先求出这个图的 dfs 生成树,如果这棵树最大深度大于等于 \(\left\lceil\frac{n}{2}\right\rceil\),那直接找最深的点到根的路径即可。考虑剩下的情况,知道无向图 dfs 生成树有一个性质:两点在原图上有边仅当在 dfs 生成树上是祖孙关系。于是发现取同一层的两个点对必然合法,因为原图上没有边,取不同层的两个同层点对同样合法,因为原图上最多有 \(2\) 条边。于是每一层尽可能多的取点对,每层最多浪费 \(1\) 个点,算下来浪费的不超过 \(\left\lceil\frac{n}{2}\right\rceil\),因此剩下的点数一定大于等于 \(\left\lceil\frac{n}{2}\right\rceil\)

Difficult Problem - CF717A

原题

\(g_i\) 为长度为 \(i\) 的合法串数,发现如果 \(i\) 这位放 \(1\)\(i-1\) 可以放 \(0\)\(1\),此时有 \(g_i+=g_{i-1}\),如果 \(i\) 这位放 \(0\)\(i-1\) 就只能放 \(1\),此时有 \(g_i+=g_{i-2}\)。容易发现长度为 \(1\) 时,放什么都可以,因此 \(g\) 为首项为 \(2\) 的斐波那契数列。设 \(\{f_i\}\) 为斐波那契数列,答案即为

\[\sum\limits_{i=l}^r {g_i\choose k}=\sum\limits_{i=l+2}^{r+2} {f_i\choose k} \\ \]

不妨让 \(l,r\) 加上 \(2\),就可以开始推柿子了。

\[ans=\frac{1}{k!}\sum\limits_{i=l}^r \frac{f_i!}{(f_i-k)!}=\frac{1}{k!}\sum\limits_{i=l}^r \prod\limits_{j=0}^k (f_i-j)=\frac{1}{k!}\sum\limits_{i=l}^rf_i^\underline{k} \\ \]

下降幂多项式转普通多项式得到

\[ans=\frac{1}{k!}\sum\limits_{i=l}^r\sum\limits_{j=0}^k{k\brack j}f_i^j=\frac{1}{k!}\sum\limits_{j=0}^k {k\brack j}\sum\limits_{i=l}^r f_i^j \\ \]

考虑用通项公式替代 \(f_i\),由二阶线性递推的特征方程得到

\[f_i=ax_1^n+bx_2^n,a=\frac{1}{\sqrt 5},b=-\frac{1}{\sqrt5},x_1=\frac{1+\sqrt5}{2},x_2=\frac{1-\sqrt5}{2} \\ \]

,带入得

\[ans=\frac{1}{k!}\sum\limits_{j=0}^k{k\brack j}\sum\limits_{i=l}^r(ax_1^i+bx_2^i)^j \\ \]

,二项式定理展开得

\[\begin{align} ans&=\frac{1}{k!}\sum\limits_{j=0}^k {k\brack j}\sum\limits_{i=l}^r\sum\limits_{t=0}^j {j\choose t} a^tb^{j-t}(x_1^t+x_2^{j-t})^i \\ &=\frac{1}{k!}\sum\limits_{j=0}^k{k\brack j}\sum\limits_{t=0}^j{j\choose t}a^tb^{j-t}\sum\limits_{i=l}^r(x_1^t+x_2^{j-t})^i \\ \end{align} \]

,可以枚举 \(j,t\),容易发现后面的部分是一个等比数列求和,套公式即可。

但是还有一个问题,\(5\) 在模 \(10^9+7\) 意义下没有二次剩余,于是扩域,把所有数用复数表示即可。

Excellent Problem

如图。

posted @ 2023-02-03 13:08  l_x_y  阅读(37)  评论(0编辑  收藏  举报