2022.1
2022.1
还是只挑了一些喜欢的题写
1.21
T1
数列 \(\{a_n\}\) 有一下递推关系
\(a_0=A\)
\(a_i=a_{i-1}+f(i)a_{\lfloor\frac{i+B}{C}\rfloor},i\geq 1\)
\(A,B,C\) 是给定常数,\(f(x)=\sum\limits_{i=0}^mp_ix^i\) 是给定的 \(m\) 次多项式。求 \(a_n\)。
模数 \(1004535809\),\(n\leq 10^{18},m\leq 20,A,B,C,p_i\leq1004535809,B<C-1\)
还不错的一个题,用到拉格朗日插值
记 \(p(i)=\lfloor\dfrac{i+B}{C}\rfloor\),\(q(i)\) 为使得 \(p(x)=i\) 的最小的 \(x\),则 \(q(i)=iC-B\)
接下来愉快的推式子
\[\begin{aligned}a_n-A &= \sum\limits_{i=1}^{n}a_{p(i)}f(i)\\
&= \sum\limits_{i=1}^{n}f(i)\left(A+\sum\limits_{j=1}^{p(i)}f(j)a_{p(j)}\right)\\
&= A\sum\limits_{i=1}^{n}f(i)+\sum\limits_{i=1}^{n}f(i)\sum\limits_{j=1}^{p(i)}f(j)a_{p(j)}\\
&= A\sum\limits_{i=1}^{n}f(i)+\sum\limits_{j=1}^{p(n)}f(j)a_{p(j)}\sum\limits_{k=q(j)}^{n}f(k)
\end{aligned}
\]
然后,我们发现 \(f(j)\sum\limits_{k=1}^{n}f(k)\) 也是多项式,并且次数多了 \(m+1\),于是我们可以把它当作新的 \(f\) 递归下去,递归过程中我们储存 \(f\) 的点值,这样 \(f\) 的前缀和也很好搞出来,需要求点值直接拉格朗日插值就行了。
递归层数是 \(\log n\) 级别的,这就做完了。
T2
不太难的二分图最大匹配