temp

图片

P4931 [MtOI2018] 情侣?给我烧了!

记答案为 \(t(n, k)\),那么有:

\[t(n, k) = {n \choose k} {n \choose k} k! 2^k t(n - k, 0) \]

也就是说我们只需要求出 \(t(i, 0)\)

注意到:

\[\sum_{k=0}^n t(n, k) = {(2n)}! \]

所以有:

\[\begin{aligned} {(2n)}! &= \sum_{k = 0}^n t(n, k) \\ &= \sum_{k=0}^n {n \choose k} {n \choose k} k! 2^kt(n - k, 0) \\ &= \sum_{k=0}^n \frac{{(n!)}^2 2^kt(n - k, 0)}{{((n-k)!)}^2k!} \\ &= {(n!)}^2\sum_{k=0}^n \frac{2^kt(n - k, 0)}{{((n-k)!)}^2k!} \\ \end{aligned} \]

即:

\[\sum_{k=0}^n \frac{2^k}{k!} \times \frac{t(n - k, 0)}{{((n-k)!)}^2} = \frac{{(2n)}!}{{(n!)}^2} \]

注意到这是一个卷积的形式,记 \(f_i = 2^i / i!\)\(g_i = t(i, 0)/{(i!)}^2\)\(h_i = (2i)!/{{(i!)}^2}\),记 \(F(x)\)\(f\) 的 OGF,\(G(x)\)\(g\) 的 OGF,\(H(x)\)\(h\) 的 OGF。

注意到:

\[h_{i+1} = \frac{(2i+2)(2i+1)}{{(i+1)}^2} h_i \]

即:

\[(i+1)h_{i+1} = 4ih_i + 2h_i \]

对应到 OGF,有:

\[H^\prime(x) = 4xH^\prime(x) + 2H(x) \]

即:

\[H^\prime(x) = \frac{2}{1-4x}H(x) \]

解得:

\[H(x) = C e^{\int{\frac{2}{1-4x} \mathrm{d} x}} \]

注意到 \(F(x) = e^{2x}\),则:

\[e^{2x} G(x) = H(x) \]

那么有:

\[G(x) = C e^{\int{\frac{2}{1-4x} \mathrm{d} x} - 2x} \]

两边求导,有:

\[G^\prime(x)=C e^{\int{\frac{2}{1-4x} \mathrm{d} x} - 2x} ({\int{\frac{2}{1-4x} \mathrm{d} x} - 2x})^\prime \]

即:

\[G^\prime(x) = G(x) (\frac{2}{1 - 4x} - 2) \]

即:

\[(1-4x)G^\prime(x) = 8xG(x) \]

还原到 \(g\),有:

\[(i+1)g_{i+1}-4ig_i = 8g_{i-1} \]

直接做即可。

CF1156E Special Segments of Permutation

考虑在笛卡尔树上做。

对于每个点,你会发现 \(l\) 是属于一个区间,\(r\) 是属于令一个区间的,那么我们只需要枚举短的那个区间即可。

时间复杂度是对的。

CF1355F Guess Divisors Count

神仙题,这是真人类智慧。

根据代数基本定理,我们将 \(X\) 分解为 \({p_1}^{a_1}{p_2}^{a_2}{p_3}^{a_3}\dots{p_k}^{a_k}\),那么答案为 \((a_1 + 1)(a_2 + 1)\dots(a_k + 1)\)

先考虑如何用第二个条件。我们发现,\(X\) 的因数中最多包含 \(2\) 个大于 \(1000\) 的质数。那么如果我们分解出若干个小于 \(1000\) 的质数,再按上面的公式计算,设得到的答案为 \(t\),那么真实答案只能为 \(t,2t\)\(4t\),利用第二个条件,猜测 \(2t\) 即可。也就是说,我们不需要考虑大于 \(1000\) 的质数,只需要考虑 \(1000\) 以内的质数。

现在,假设我们已经确定了 \(X\) 的这些质因数,如何求出幂次呢?首先,对于一个质因数 \(p\),我们可以通过询问 \(p^{\lfloor \log_{p}{{10}^9} \rfloor}\) 来得到 \(p\) 的幂次。又因为询问的数的上界是 \({10}^{18}\),而我们前面所说的数(即 \(p^{\lfloor \log_{p}{{10}^9} \rfloor}\))不超过 \({10}^9\),所以我们可以将两个质因数绑在一起询问。由于 \({10}^9\) 范围内一个数最多有 \(9\) 个质因数,所以这里我们最多需要询问 \(\lceil \frac{9}{2} \rceil = 5\) 次即可得到每个质因数的幂次,进而得到答案。

好的,现在问题变成了在 \(17\) 次询问内确定 \(X\) 的质因数。考虑将 \(1000\) 以内的质数分组,每组的乘积不能超过 \({10}^{18}\),且每组的质数应该尽量多。例如:\(2,3,5,7,\dots,47\) 可以分为一组。每次询问时,我们只需要询问一组的乘积就能判断这一组里哪些数是 \(X\) 的质因数。但是这样询问 \(17\) 次后我们最多确定到 \(661\),还剩一些质数,怎么办?这时候就需要利用第一个条件了。

设经过上面所有操作后得到的答案为 \(r\),对 \(r\) 进行分类讨论:

  • \(r \leq 2\),此时 \(X\) 中大于 \(661\) 的质因数最多有 \(3\) 个。利用第一个条件,我们发现输出 \(x+7\) 是一定对的。
  • \(r \geq 3\),此时 \(X\) 中大于 \(661\) 的质因数最多有 \(2\) 个,我们输出 \(2r\) 即可。

做完了,真可恶。

posted @ 2025-07-12 14:28  Eliauk_FP  阅读(16)  评论(0)    收藏  举报