Loading

【题解】UOJ Round #23

// created on 22.09.17

A. 民意调查

先考虑集合大小为奇数的情况:令中位数为 \(a_i\),集合大小为 \(2k+1\),那么要在 \([1,i-1]\)\([i+1,n]\) 中分别选 \(k\) 个数,并且使得 \([1,i-1]\) 中选的数距离 \(a_i\) 的距离和,严格小于 \([i+1,n]\) 中选的数距离 \(a_i\) 的距离和。偶数的情况是类似的。

于是很容易想到令 \(f_{i,j,k}\) 表示前 \(i\) 个数选了 \(j\) 个,总和为 \(k\) 的方案数。\(g_{i,j,k}\) 为后缀镜像数组。拼合答案可以直接利用两个数组做到 \(O(n^3V)\) 。不过可惜的是此时空间复杂度也为 \(O(n^3V)\)

我们不考虑拼合答案,考虑令 \(f_{i,j,k,0/1}\),其中 \(f_{i,j,k,0}\) 表示选择了 \(j\) 个数,总和为 \(k\),还没选择中位数。转移考虑当前选不选,如果选就变成 \(f_{i+1,2ka_{i+1}-j,k,1}\) 。然后 \(f_{i,j,k,1}\) 对应地表示已经选择了中位数。最后的答案就是 \(f_{n,0,0,1}\),减去容易讨论的非法情况(比如说一个数不选)。

这样第一维可以滚动数组,空间复杂度变为 \(O(n^2V)\) 。而偶数的情况同样可以由同样的空间复杂度做到。

撤销背包也行,想怎么写怎么写。

B. 地铁规划

发现其实就是 baka trick,不过只允许使用一个栈。

我们想让左侧点始终在上面,这样弹栈才是合法的。同时,我们发现数据范围是 \(O(n\log n)\),这基本提示我们利用某些均摊。而 \(O(n\log n)\) 的均摊一般 要么是 \(2^k\) 要么是 \(\mathrm{lowbit}\)

我们不妨考虑 \(\mathrm{lowbit}\) 。记录左侧点的数量为 \(w\),那么每次进行完后,如果栈顶是右侧点,那么不断弹栈,直到弹出来 \(\mathrm{lowbit}(w)\) 个左侧点。

我们分析复杂度,\(\mathrm{lowbit}\) 的好处在于,在腾出 \(\mathrm{lowbit}\) 个位置后,只有在删去 \(\mathrm{lowbit}\) 时才需要弹栈。由于这个过程中 \(\mathrm{lowbit}\)单调递增 的,因此一个黑点被弹的次数是 \(O(\log n)\) 次的。而白点被弹的次数显然是 \(O(\log n)\) 。于是操作次数是 \(O(n\log n)\)

代码就不写了。

C. 国王出游

考虑到答案为:

\[\begin{aligned} ans&=n!m!\sum_{i=0}^{T}{T\choose i}\left([x^n]e^{x_0x}(e^{Ax}+e^{-Bx})^i\right)\left([x^m]e^{y_0x}(e^{Cx}+e^{-Dx})^{T-i}\right)\\\ &=n!m!T!\sum_{a=0}^{n}\sum_{b=0}^{m}\frac{4^{T-a-b}}{(T-a-b)!}\frac {[x^n]e^{x_0x}(e^{Ax}+e^{-Bx}-2)^a}{a!}\frac {[x^m]e^{y_0x}(e^{Cx}+e^{-Dx}-2)^b}{b!}\\ \end{aligned} \]

而对于 \(\frac {[x^n]e^{x_0x}(e^{Ax}+e^{-Bx}-2)^a}{a!}\),发现是拉反的套路式。我们考虑令 \(G(x)=e^{Ax}+e^{-Bx}-2\),而 \(F(x)=e^{x_0x}\),要解决的问题是:\(\forall a\in[0,n],[x^n]F(x)G(x)^a\) 。考虑令 \(P(x)=F(G^{-1}(x))\) 有:

\[[x^n]\frac{P(G(x))}{1-uG(x)}=\frac{1}{n}[x^{n-1}]\frac{(1-ux)P'(x)+uP(x)}{(1-ux)^2}\left(\frac{x}{G^{-1}(x)}\right)^n \]

只需要求出 \(G^{-1}(x)\)\(P(x)\) 即可,而主要目标在于求出 \(G^{-1}(x)\) 。考虑牛顿迭代:令 \(C_0(x)\) 满足 \(e^{AC_0(x))}+e^{-BC_0(x)}-2-x\equiv 0\pmod{x^n}\),现在考虑求出 \(C(x)\) 满足 \(e^{AC(x))}+e^{-BC(x)}-2-x=0\pmod {x^{2n}}\) 有:

\[C(x)\equiv C_0(x)-\frac{e^{AC_0(x))}+e^{-BC_0(x)}-2-x}{Ae^{AC_0(x))}-Be^{-BC_0(x)}}\pmod {x^{2n}} \]

不过还有一些 corner case:当 \(A=B\)\([x^1]G(x)=0\),意味着此时 \(G(x)\) 没有复合逆。此时考虑令 \(H(x)=\sqrt{G(x)}\),那么 \(H(x)\) 存在复合逆。只需要求 \(\forall a\in[0,2n]F(x)H(x)^i\) 即可。

那对于 \(H(x)\) 的复合逆,要求是 \(\sqrt{G(H^{-1}(x))}-x\equiv 0\) 。同样考虑牛顿迭代:

\[C(x)\equiv C_0(x)-\frac{2\sqrt{G(C_0(x))}\left(\sqrt{G(C_0(x))}-x\right)}{Ae^{AC_0(x)}-Be^{-BC_0(x)}}\pmod {x^{2n}} \]

时间复杂度仍然是 \(O(n\log n)\)

提交记录:Submission #584057 - Universal Online Judge (uoj.ac)

posted @ 2022-09-19 11:54  Qiuly  阅读(117)  评论(0编辑  收藏  举报