闲话 23.2.26

闲话

我不知道为啥有人关注别人的通过数
这玩意有啥意义?

今天中午的歌是 discord(the living tombstone remix) 吗?
感觉能感受出这个主题
挺好听的

今日推歌:
帝国少女 - R Sound Design feat. 初音ミク
恋爱裁判 - 40mP feat. 初音ミク

杂题

今天打算刷一天杂题
所以随写随更新吧

好久没写了啊(

青鱼和区间

绝顶聪明的 Alice 和 Bob 在玩游戏。

Alice 选定一个 \([1, n]\) 内的整数 \(k\),Bob 需要猜出这个数字。Bob 最开始会确定一个区间集合 \(S = \{[l_i, r_i] : 1\le l_i \le r_i\le n\}\),他可以任意次地选择这其中的任意个区间,并同时询问 \(k\) 是否在这些区间中,Alice 会正确地同时回答。

给定 \(n\)。请计数集合 \(S\) 的数量,满足无论 \(k\) 是什么数字,Bob 都能通过恰当的操作(不加推导地)确定这个数字。答案对 \(998244353\) 取模。

\(n\le 10^5\)

就是问有多少个集合 \(S\) 满足 \(\forall i \in [1, n],\ \exists T\subseteq S,\ \bigcap_{k\in T} k = \{i\}\)
这题 lyin 昨天不让我在他那看题解
你先别急 我急完了 因而有了这个杂题

对于第 \(i\) 个数,记覆盖了 \(i\) 的区间集合为 \(S_i \subseteq S\)。构造一个长度为 \(n\) 的序列 \(\{a_i\}\),满足 \(a_i = a_j\text{ iff } S_i = S_j\)

可以发现,如果 \(a_i = a_j \text{ s.t. } i < j\),则 \((i, j]\) 里的数定是无法被表示出来的。这证明显然,由于一个区间覆盖了 \(i\) 则覆盖了 \(j\)。我们可以从这里出发,考虑刻画不合法集合的性质。可以考虑这样的构造:
构造一个序列 \(b\),初始为空。维护指针 \(i\),初始在位置 \(1\)。每次将 \(a_i\) 放入 \(b\) 序列的末尾,取 \(\text{arg max}(a_j = a_i)\)\(j\),指针跳 \(i \leftarrow j + 1\)。举个例子:
\(a = [1, 9, 1, 9, 8, 1, 0, 7, 2, 3, 5, 2, 3, 3]\)
\(b = [1, 0, 7, 2, 3]\)

这样我们就能通过 \(a\to b\) 来确定不合法的 \(a\) 了。
\(f(i)\)\(n = i\) 时的答案,\(g(i, j)\) 是长度为 \(i\)\(a\) 缩减到长度为 \(j\)\(b\) 对应的 \(S\) 的数量,则我们可以知道

\[f(i) = 2^{\binom{i + 1}{2}} - \sum_{j = 1}^{i - 1} f(j) \times g(i, j) \]

\[g(i, j) = g(i - 1, j - 1) + \sum_{k\ge 0} g(i - 1 - (k + 1), j - 1)\times 2^{\binom{k + 1}{2}} \]

第一个是所有可能减去不合法的可能,第二个是考虑有一段长度为 \(k\ge 0\) 的区间被跳过的可能。

这就能做到 \(O(n^3)\)。但我们还可以走得更远。

观察第二个方程的形式。我们可以预见,这形式导出的是第一维的卷积,因此不妨对第一维求和。设

\[G_j(x) = \sum_{i\ge 0} g(i, j) x^i\quad A(x) = x + \sum_{k\ge 2} 2^{\binom{k - 1}{2}} x^k \]

则我们能知道

\[\begin{aligned} G_j(x) &= \sum_{i\ge 0} g(i, j) x^i \\ &= \sum_{i\ge 0} g(i - 1, j - 1) x^i + \sum_{i\ge 0} \sum_{k\ge 0} g(i - 1 - (k + 1), j - 1)\times 2^{\binom{k + 1}{2}} x^i \\ &= xG_{j - 1} + \sum_{k\ge 0} 2^{\binom{k + 1}{2}} \times \left( \sum_{i\ge 0} g(i - 2 - k, j - 1)x^i\right) \\ &= xG_{j - 1} + \sum_{k\ge 0} 2^{\binom{k + 1}{2}} x^{k + 2} \times \left( \sum_{i\ge 0} g(i, j - 1)x^i\right) \\ &= xG_{j - 1} + \sum_{k\ge 0} 2^{\binom{k - 1}{2}} x^{k} \times G_{j - 1}(x) \\ &= G_{j - 1}(x) A(x) \end{aligned} \]

\(G_{j}(x) = A(x)^j\)

观察第一个方程的形式。设

\[F(x) = \sum_{i\ge 0} f(i) x^i\quad H(x) = \sum_{i\ge 0} 2^{\binom{i + 1}{2}} x^i \]

则我们由这个半在线卷积的形式可以知道

\[\sum_{j = 1}^i f(j) g(i, j) = H[i] \]

也就是

\[H[i] = \sum_{j = 1}^i f(j) [x^i] A(x)^j = [x^i] \sum_{j = 1}^i f(j) A(x)^j = [x^i] F(A(x)) \]

也就是 \(H(x) = F(A(x))\)。这启发我们使用拉格朗日反演解决问题。不难得到

\[\begin{aligned} [x^n]F(x) = [x^n] H(A^{\langle -1\rangle}(x)) = \frac{1}{n} [x^{n - 1}] H'(x) \left( \frac{x}{A(x)}\right)^n \end{aligned}\]

这形式的计算是简便的。因此可以在 \(O(n\log n)\) 的复杂度内得到(所有 \(1\le m\le n\) 的)答案。由于原题是任意模数,常数可能大点。

Submission.



[HAOI2010]最长公共子序列

给定两个字符串 \(S, T\),求出最长公共子序列的长度,并计数可能的方案。

\(1\le |S|, |T|\le 5000\)

昨天 arc 充分表明我不会 dp 了
水一道紫题吧

第一个问题是经典的,我们只需要设 \(f(i, j)\) 表示考虑 \(S\) 的前 \(i\) 个字符,\(T\) 的前 \(j\) 个字符时最长的长度,并转移

\[f(i, j) = \max\left\{f(i - 1, j), f(i, j - 1), f(i - 1, j - 1) + [S_i = T_j]\right\} \]

即可。

第二个问题可以同时求出。我们设 \(g(i, j)\) 表示考虑 \(S\) 的前 \(i\) 个字符,\(T\) 的前 \(j\) 个字符时答案方案的计数,则可以和上面的转移相同地,分别讨论几种情况。
首先若 \(f(i, j) = f(i - 1, j)\)\(f(i, j - 1)\) 时直接加入 \(g(i - 1, j)\)\(g(i, j - 1)\) 即可。
其次如果 \(S_i = T_j\)\(f(i, j) = f(i - 1, j - 1) + [S_i = T_j]\) 则直接加入 \(g(i - 1, j - 1)\) 即可。
最后发现可能重复。具体地,如果 \(f(i, j) = f(i - 1, j - 1)\),这时发现 \(g(i - 1, j - 1)\) 的贡献会在加入 \(g(i - 1, j)\)\(g(i, j - 1)\) 时被算两次,并且不会有其他重复的贡献计入。因此判一下减掉即可。

总时间复杂度 \(O(n^2)\)

Submission.



[RC-03] 记忆

有一个括号串 \(S\),初始时 \(S =\)()。有 \(n\) 个操作,分为三种:

  1. 在当前 \(S\) 的末尾加一对括号(即 \(S\) 变为 S());
  2. 在当前 \(S\) 的最外面加一对括号(即 \(S\) 变为 (S));
  3. 取消第 \(x\) 个操作,即去除第 \(x\) 个操作造成过的一切影响(例如,如果第 \(x\) 个操作也是取消操作,且取消了第 \(y\) 个操作,那么当前操作的实质就是恢复了第 \(y\) 个操作的作用效果)。

每次操作后,你需要输出 \(S\) 的能够括号匹配的非空子串(子串要求连续)个数。
一个括号串能够括号匹配,当且仅当其左右括号数量相等,且任意一个前缀中左括号数量不少于右括号数量。

\(1\leq n\leq 2\times 10^5\)\(op\in \{1,2,3\}\)\(1\leq x\leq n\),一个操作在形式上最多只会被取消一次(即所有 \(x\) 互不相同)。

官方题解看不懂啊!

考虑如何维护一个支持快速删除的结构。

观察性质,考虑操作 \(1\) 都干了啥。设答案是 \(ans\),并记录一个当前的连续闭合括号段数量 \(c\)。举个例子:(())((()))()() 有四个连续闭合括号段 (()) ((())) () ()。在后面加一对括号,则 \(ans \leftarrow ans + c + 1\)\(c \leftarrow c + 1\)
用矩阵描述一下。设 \(\bm a = [ans\ \ \ c \ \ \ 1]\),则操作 \(1\) 对应的矩阵就是

\[\begin{bmatrix} 1 & 0 & 0 \\ 1 & 1 & 0 \\ 1 & 1 & 1 \end{bmatrix} \]

操作 \(2\) 对应的矩阵也可以写为

\[\begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 0 \\ 1 & 1 & 1 \end{bmatrix} \]

由于矩阵乘法没有交换律,扔在线段树上维护。操作 1/2 就新加一个节点,操作 3 就对应在树上清空/恢复一个矩阵即可。注意矩阵乘法没有交换律,操作 2 的矩阵也没有逆。

复杂度是 \(O(27 n\log n)\),可以卡卡矩乘的常,会快点。当然我代码没有用力卡常。
好像有人写的是 \(2\times 2\) 的奇妙矩阵,不懂。

Submission.



[ARC133F] Random Transition

给定整数 \(n, k\) 和一个序列 \(a\)

Snuke 会进行如下的操作:

  • 随机地取一个 \([0, n]\) 内的整数 \(x\)。对每个 \(0\le i \le n\)\(x = i\) 的概率为 \(a_i / 10^9\)
  • 进行如下操作 \(k\) 次:
    • \(x / n\) 的概率将 \(x\)\(1\);以 \(1 - x / n\) 的概率将 \(x\)\(1\)。注意 \(x\in [0, n]\) 总是成立的。

对每个 \(0\le m \le n\),求出所有操作执行后 \(x = m\) 的概率。

\(1\le n \le 10^5, \ 0\le a_i\le 10^9, \ \sum a_i = 10^9, \ 1\le k \le 10^9\)

这个的精神续作?
不是很懂为啥这么说。但化式子很 ex。

有个妙妙转化。
我们看成一排 \(n\) 个硬币,最开始有 \(i\) 个正面朝上的概率是 \(p_i = a_i / 10^9\)。每次可以随机选一个硬币翻转,问最后有 \(m\) 个硬币正面朝上的概率。

这转化最好的一点就是我们可以暴力写 gf 了。我们设最后的 pgf 是 \(F(x)\),则考虑组合单个位置翻转奇数次/偶数次的 pgf,并用 \(x\) 表示选择这个硬币是否正面朝上,可以知道

\[F(x) = \frac{1}{n^k} \left[\frac{y^k}{k!}\right] \sum_{i = 0}^n p_i \left(\frac{e^y + e^{-y}}{2} x + \frac{e^y - e^{-y}}{2} \right)^i \left(\frac{e^y - e^{-y}}{2} x + \frac{e^y + e^{-y}}{2} \right)^{n - i} \]

也就是说,枚举 \(i\) 个初始为正面的可能性,这 \(i\) 个位置若翻转了偶数次则对最终组合起来的 \(x^k\)\(x\) 的贡献,另 \(n - i\) 个位置与之相反。

然后开始套路化式子。

\[\begin{aligned} &\left[\frac{y^k}{k!}\right] \sum_{i = 0}^n p_i \left(\frac{e^y + e^{-y}}{2} x + \frac{e^y - e^{-y}}{2} \right)^i \left(\frac{e^y - e^{-y}}{2} x + \frac{e^y + e^{-y}}{2} \right)^{n - i} \\ \ = & \left[\frac{y^k}{k!}\right] \frac{1}{2^n} \sum_{i = 0}^n p_i \left(\left(e^y + e^{-y}\right) x + \left(e^y - e^{-y}\right)\right)^i \left(\left(e^y - e^{-y}\right) x + \left(e^y + e^{-y}\right) \right)^{n - i} \\ \ = & \left[\frac{y^k}{k!}\right] \frac{1}{2^n} \sum_{i = 0}^n p_i \left(e^y(x + 1) + e^{-y}(x - 1) \right)^i \left(e^y(x + 1) - e^{-y}(x - 1) \right)^{n - i} \\ \ = & \left[\frac{y^k}{k!}\right] \frac{1}{2^n} \sum_{i = 0}^n p_i \sum_{s} \binom{i}{s} e^{sy}(x + 1)^s e^{-(i - s)y}(x - 1)^{i - s} \sum_{t} \binom{n - i}{t} e^{ty}(x + 1)^{t} (-1)^{n - i - t} e^{-(n - i - t)y} (x - 1)^{n - i - t} \\ \ = & \left[\frac{y^k}{k!}\right] \frac{1}{2^n} \sum_{i = 0}^n \sum_{s} \sum_{t} p_i (-1)^{n - i - t} \binom{i}{s} \binom{n - i}{t} e^{(2s + 2t - n)y} (x - 1)^{n - s - t}(x + 1)^{s + t} \\ \ = &\ \frac{1}{2^n} \sum_{s} \sum_{t} \sum_{i = 0}^n p_i (-1)^{n - i - t} \binom{i}{s} \binom{n - i}{t} (2s + 2t - n)^k (x - 1)^{n - s - t}(x + 1)^{s + t} \\ \ = &\ \frac{1}{2^n} \sum_{v} \sum_{s} \sum_{i} p_i (-1)^{n + s - i - v} \binom{i}{s} \binom{n - i}{v - s} (2v - n)^k (x - 1)^{n - v}(x + 1)^{v} \end{aligned}\]

最开始我上来就开始拆 拆出五个求和号 彻底不想做了
怎么公式自动折叠了

这个形式看着就很 \(\sum_i f(i) (x + 1)^{n - i} (x - 1)^i\),因此我们先设一下。

\[f(v) = \sum_{s} \sum_{i} p_i (-1)^{n + s - i - v} \binom{i}{s} \binom{n - i}{v - s} (2v - n)^k \]

则原式就是

\[\sum_{v} f(v) (x - 1)^{n - v}(x + 1)^{v} \]

\(f\) 的形式看着就很范德蒙德卷积。试试?

\[\begin{aligned} f(v) &= \sum_{s} \sum_{i} p_i (-1)^{n + s - i - v} \binom{i}{s} \binom{n - i}{v - s} (2v - n)^k \\ &= (2v - n)^k (-1)^{n - v} \sum_{i} p_i (-1)^{i} \sum_{s} (-1)^{s} \binom{i}{s} \binom{n - i}{v - s} \\ &= (2v - n)^k (-1)^{n - v} \sum_{i} p_i (-1)^{i} [x^v](1 - x)^i (x + 1)^{n - i} \\ &= (2v - n)^k (-1)^{n - v} [x^v] \sum_{i} p_i (x - 1)^i (x + 1)^{n - i} \end{aligned}\]

然后我们最终需要算的形式只有

\[\sum_{i} p_i (x - 1)^i (x + 1)^{n - i} \]

分治乘法能朴素地得到 \(O(n\log^2 n)\)
题解:可以 \(O(n\log n)\) 地计算上式。orz EI!

其实也就是换元。设 \(t = x - 1\),则我们能得到

\[\begin{aligned} &\sum_{i} p_i (x - 1)^i (x + 1)^{n - i} \\ = \ & \sum_{i} p_i t^i (t + 2)^{n - i} \\ = \ & \sum_{i} p_i t^i \sum_{j} \binom{n - i}{j} 2^{n - i - j} t^j \\ = \ & \sum_{i} \sum_{j}\binom{n - i}{j} p_i 2^{n - i - j} t^{i + j} \\ = \ & \sum_{k} 2^{n - k}t^k \sum_{i + j = k}\binom{n - i}{j} p_i \\ = \ & \sum_{k} \frac{2^{n - k}t^k}{(n - k)!} \sum_{i + j = k} \frac{(n - i)!}{j!} p_i \end{aligned}\]

最后只需要作多项式点值平移 \(- 1\) 即可。

总时间复杂度 \(O(n\log n)\)

Submission.

posted @ 2023-02-26 10:55  joke3579  阅读(106)  评论(0编辑  收藏  举报