闲话 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\) 的数量,则我们可以知道
第一个是所有可能减去不合法的可能,第二个是考虑有一段长度为 \(k\ge 0\) 的区间被跳过的可能。
这就能做到 \(O(n^3)\)。但我们还可以走得更远。
观察第二个方程的形式。我们可以预见,这形式导出的是第一维的卷积,因此不妨对第一维求和。设
则我们能知道
即 \(G_{j}(x) = A(x)^j\)。
观察第一个方程的形式。设
则我们由这个半在线卷积的形式可以知道
也就是
也就是 \(H(x) = F(A(x))\)。这启发我们使用拉格朗日反演解决问题。不难得到
这形式的计算是简便的。因此可以在 \(O(n\log n)\) 的复杂度内得到(所有 \(1\le m\le n\) 的)答案。由于原题是任意模数,常数可能大点。
给定两个字符串 \(S, T\),求出最长公共子序列的长度,并计数可能的方案。
\(1\le |S|, |T|\le 5000\)。
昨天 arc 充分表明我不会 dp 了
水一道紫题吧
第一个问题是经典的,我们只需要设 \(f(i, j)\) 表示考虑 \(S\) 的前 \(i\) 个字符,\(T\) 的前 \(j\) 个字符时最长的长度,并转移
即可。
第二个问题可以同时求出。我们设 \(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)\)。
有一个括号串 \(S\),初始时 \(S =\)
()
。有 \(n\) 个操作,分为三种:
- 在当前 \(S\) 的末尾加一对括号(即 \(S\) 变为
S()
);- 在当前 \(S\) 的最外面加一对括号(即 \(S\) 变为
(S)
);- 取消第 \(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\) 对应的矩阵就是
操作 \(2\) 对应的矩阵也可以写为
由于矩阵乘法没有交换律,扔在线段树上维护。操作 1/2 就新加一个节点,操作 3 就对应在树上清空/恢复一个矩阵即可。注意矩阵乘法没有交换律,操作 2 的矩阵也没有逆。
复杂度是 \(O(27 n\log n)\),可以卡卡矩乘的常,会快点。当然我代码没有用力卡常。
好像有人写的是 \(2\times 2\) 的奇妙矩阵,不懂。
给定整数 \(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\) 表示选择这个硬币是否正面朝上,可以知道
也就是说,枚举 \(i\) 个初始为正面的可能性,这 \(i\) 个位置若翻转了偶数次则对最终组合起来的 \(x^k\) 有 \(x\) 的贡献,另 \(n - i\) 个位置与之相反。
然后开始套路化式子。
最开始我上来就开始拆 拆出五个求和号 彻底不想做了
怎么公式自动折叠了
这个形式看着就很 \(\sum_i f(i) (x + 1)^{n - i} (x - 1)^i\),因此我们先设一下。
设
则原式就是
\(f\) 的形式看着就很范德蒙德卷积。试试?
然后我们最终需要算的形式只有
分治乘法能朴素地得到 \(O(n\log^2 n)\)。
题解:可以 \(O(n\log n)\) 地计算上式。orz EI!
其实也就是换元。设 \(t = x - 1\),则我们能得到
最后只需要作多项式点值平移 \(- 1\) 即可。
总时间复杂度 \(O(n\log n)\)。
以下是博客签名,与正文无关。
请按如下方式引用此页:
本文作者 joke3579,原文链接:https://www.cnblogs.com/joke3579/p/chitchat230226.html。
遵循 CC BY-NC-SA 4.0 协议。
请读者尽量不要在评论区发布与博客内文完全无关的评论,视情况可能删除。