日记

日记

Tue Apr 01 2025
4 分钟

我尽力,我无悔。

T1 Link to T1

对于那种只输入一两个数的题,首先不要去想正解,先猜半个小时结论看看猜不猜的出来。多半是猜的出来的

可是我写 T2 去了。

发现从 001n\frac{1}{n} 的概率一发入魂。而剩下 n1n\frac{n - 1}{n} 的概率就是在 [1,n1][1,n - 1]。对于每个点都有 1n\frac{1}{n} 的概率赢,有 n2n\frac{n - 2}{n} 的概率留在 [1,n1][1,n - 1],那么对于每个 i[1,n1]i \in [1,n - 1] 都是一样的。期望是 1+(n1)2n1 + \frac{(n - 1)^2}{n}

T2 Link to T2

赛时想法:设 dpi,jdp_{i,j} 表示第 ii 个点取值为 jj 的方案数。显然有:dpi,j=k=1aidpi1,k×[kj]dp_{i,j} = \sum\limits_{k = 1}^{a_i}dp_{i - 1,k} \times [k \neq j]。复杂度 O(nV2)O(nV^2),可以通过全局和优化到 O(nV)O(nV),然后拿到 2020 的好成绩。
我们发现这玩意可以简化成三个操作:区间取反,区间赋值,区间加。前面两个都是特化的区间乘。我们直接动开线段树,花了 2h 的时间获得的 6060好成绩

正解是这样的:正难则反。我们想要求恰好00 个非法点的情况数,我们就尝试求钦定ii 个非法点的情况数 F(i)F(i),然后反演一下得到最终的答案。

考虑如何求 F(i)F(i)。设 dpi,jdp_{i,j} 表示前 ii 个数分 jj 段的方案数。显然有 F(i)=dpi,niF(i) = dp_{i,n - i}。有显然的转移:dpi,j=k=1idpk1,j1×minl=kialdp_{i,j} = \sum\limits_{k = 1}^{i}dp_{k - 1,j - 1} \times \min\limits_{l = k}^{i}a_l。复杂度 O(n3)O(n^3),可以拿到 00 分的好成绩

我们发现我们不关心 jj 的值,只关心它的奇偶性。我们就可以每次转移都乘一个 1-1,变成 dpi=k=1idpk1×minl=kialdp_i = \sum\limits_{k = 1}^{i}-dp_{k - 1} \times \min\limits_{l = k}^{i}a_l。复杂度 O(n2)O(n^2),可以获得 6060 的好成绩。

最后用单调栈优化到 O(n)O(n) 即可通过。

T3 Link to T3

我们发现如果对于一个可行的方案,每个数都异或一个 xx,最终答案也可行。且总的异或和也异或了 yy。所以我们不用考虑具体的方案,求出总方案数除以 2k2^k 就行。

考虑先填好第二行,方案数 2k×(2k1)×(2k2)××(2kn)2^k \times (2^k - 1) \times (2^k - 2) \times \cdots \times (2^k - n),然后钦定第一行有 ii 个与第二行冲突,方案数为 (2ki)×(2ki1)×(2ki2)××(2kn+1)(2^k - i) \times (2^k - i - 1) \times (2^k - i - 2) \times \cdots \times (2^k - n + 1)。直接反演得到恰好有 00 个与之冲突的方案数。

后日谈 Link to 后日谈

今天就是纯纯的数学题综合训练。于是开始预习复习概率与期望。

我尽力,我无悔。