闲话 23.3.15

闲话

好耶我春季赛退役!
但是 T3 挂成 60 分怎么说都不太合适是吧?
你说我这 60 分要是前 12 个点也好 至少证明我暴力没问题
为啥第 4 个点挂了啊

然后回家就发烧了
第一晚上以为是小甲流 吃了点药
第二天三点多被过敏 + 发烧叫醒
然后烧到 40 度 乖乖打了点滴
笑了
然后就是漫长的虚和颓
我要是能有体力颓就好了

然后不发烧了,但是虚
然后消化功能不行了 🤣👉
我也不是很懂为啥
但是很不舒服(

于是没去武汉。
但是说实在的 有人想面我吗
不如膜拜同机房大佬

joke3579 一直不更闲话都有人以为他退役了。
—— Jijidawang

有人这么想吗?

但是想吃热干面(
从来没吃过(

于是这阵子和家父看了几部电影(居家
Interstellar 挺好看的
并被推荐《一人之下》
这番前两集挺劲爆的 不像魔禁(
说实在的 好像看日轻看多了渐渐吃不下国内作品的套路了
以及一人是那种着眼于传统文化的 和我的口味莫名不搭(
也许也有可能是因为不想带入?

最近看完的轻小说是 平职
白米良老师真的 太强太强了
一口气看完了第十三卷 实在不知道用什么话来夸这作品
十分的恢弘 节奏也掌握得很好
而且其中的史诗感十分到位
我没看前传 一点不想看 因为完全吃不下刀子 正传就挺好的
怎么说呢 这本书追着看了两三年了
之前一直盼着最后一卷得有半年了
终于有了一个结尾 也挺欣慰的
而且双喜临门 游戏人生第十二卷也要正式出了
捏麻麻的 十二年出十二本书是吧

现在不是很想看小说改的番了
感觉不如文字版 毕竟这是更多人用不同的想法创作出来的
而且容易崩 平职和邻家天使都给了我一刀 游戏人生属于是还没出刀
当然有的是真好 不想举例子(

好像写得挺多的?那就当补上我这些天的咕咕咕吧!
啊对了 我今天阳历生日!祝我生日快乐!

今日推歌:【乐正绫AI】《精卫》——“愿生命绽放再盛开,让它填没在大海”【原创PV付】
鬼面老师调的真心好 改的词也挺得我心的

杂题

你也不能一直摆啊,是吧老周。

P4062

给定一个长度为 \(n\) 的序列,求出存在绝对众数(出现次数严格大于区间长度一半的数字)的区间数。

\(n\le 5\times 10^5\)

区间问题首先想一个分治。考虑当前区间在 \([l, r]\),取分治中点 \(\text{mid} = \dfrac{l + r}{2}\),我们观察一些性质。

可以发现,如果我们只计算经过 \(\text{mid}\)\(O(n)\) 个区间,我们拓展区间时每次只会向已有集合中加入一个新元素。这种情况下,不难发现绝对众数只会更改 \(O(\log n)\) 次。这启发我们枚举绝对众数。

首先可以分别枚举 \([x, \text{mid}]\)\([\text{mid} + 1, x]\) 的绝对众数,这容易在 \(O(n)\) 的复杂度内完成。容易发现这覆盖了区间拼合后所有可能的绝对众数。随后枚举绝对众数 \(v\),计算有多少个区间以他为绝对众数。这时可以扫一侧区间,记录每个位置对应区间内 \(v\) 出现次数 \(\times 2\) 减去区间长度。对这个值开桶映射,然后扫另一侧计算答案。扫到一个位置看区间长度减去区间内 \(v\) 出现次数 \(\times 2\),大于这个值的桶内值之和就是这个区间的答案。对桶作后缀和即可。

总时间复杂度 \(O(n\log^2 n)\)。实际上跑挺快。

存在 1log 甚至 0log 甚至 3log 的做法。



CF794G

给定 \(k\) 和两个长度分别为 \(n, m\) 的字符串 \(S_1, S_2\),字符集为 \(\{\)A, B, ?\(\}\)。一种合法方案是将两个串中每个 ? 任意替换为 AB 中的一个。请对所有合法方案,求和长度分别小于等于 \(k\) 的 01 串对 \((s, t)\) 数量,满足把所有 A 替换成 \(s\)、把所有 B 替换成 \(t\) 后得到的两个 01 串相同。

\(1\le n, m, k\le 3\times 10^5\)

场上我连循环节都没想到(

先判掉 \(S_1 = S_2\) 的方案,下面不讨论。这时候选啥都可以,是 \(\left(\sum_{i = 1}^k 2^i\right)^2\)

我们固定一种 ? 的选法。
可以发现,任意合法的 \((s, t)\) 都有相同的循环节,其长度就是 \(v = \gcd(|s|, |t|)\),短于这个的所有串都是可以的。
证明可以考虑两个串互相匹配,这长度是最大的自由度。

因此 AB 的顺序无所谓了,我们需要的只有数量。假设 \(S_1\)\(S_2\)\(p\)A,少 \(q\)B,这时对答案的贡献记作 \(f(p, q)\)
如果 \(p, q\) 异号或者只有一侧是 \(0\) 显然无解,下面取个绝对值来看。可以知道的是 \(|s| \times p = |t| \times q\),这也就说明了 \(p, q\) 可以先除掉一个 \(\gcd\)。然后分别讨论。

如果 \(p = q = 0\) 则我们可以看作上下同构,这时任意长度的 \(s,t\) 都是可以的,因此答案就是

\[\sum_{i = 1}^k \sum_{j = 1}^k2^{\gcd(i, j)} = \sum_{x = 1} 2^x \sum_{d \ge 1} \mu(d) \left\lfloor\frac{k}{xd}\right\rfloor^2 \]

可以两次数论分块 \(O(n + n^{3/4})\) 地得到。

反之都不是 \(0\)\(\gcd(p, q) = 1\),设 \(v = \dfrac{n}{\max(p, q)}\)。答案即为 \(\sum_{i = 1}^v 2^i\),这个就是直接拼。

然后考虑上下选问号的情况。其实最开始可以不特判 \(S_1 = S_2\),最后满足 \(S_1 = S_2\) 的方案总会被计入 \(f(0, 0)\)
假设 \(S_1\) 里的 ? 数量是 \(c_1\)\(S_2\) 里的是 \(c_2\),并不考虑 ?\(S_1\)\(S_2\)\(a\)A,少 \(b\)B。答案即为

\[\begin{aligned} & \sum_{i = 0}^{c_1} \sum_{j = 0}^{c_2} \binom{c_1}{i} \binom{c_2}{j} f(a + i - j, b - (c_1 - i) + (c_2 - j)) \\ = & \ \sum_{i - j = -c_2}^{c_1} \sum_{j = 0}^{c_2} \binom{c_1}{i} \binom{c_2}{j} f(a + i - j, b +c_2 - c_1 + i - j) \\ = & \ \sum_{k = -c_2}^{c_1} f(a + k, b +c_2 - c_1 + k) \sum_{j = 0}^{c_2} \binom{c_1}{j + k} \binom{c_2}{j} \\ = & \ \sum_{k = -c_2}^{c_1} f(a + k, b +c_2 - c_1 + k) \binom{c_1 + c_2}{c2 + k} \end{aligned}\]

算就行了。直接做的复杂度是 \(O(n\log n)\) 的。可以预处理 \(\gcd\) 做到严格 \(O(n)\),如果被卡常的话。



AGC003D

给定 \(n\) 个数 \(s_i\),要求从中选出最多的数,满足任意两个数之积都不是完全立方数。

\(n\le 10^5\)\(s_i\le 10^{10}\)

\(s = \max \{s_i\}\)

我们发现答案不太支持 \(O(n\sqrt s)\) 的复杂度。但是由于题面要删除的是 \(k^3\) 的质因子,我们可以首先筛出 \(\sqrt[3] s\) 内的质数,这样我们就能在 \(O(n\sqrt[3] s)\) 的复杂度下删除所有形如 \(k^3\) 的因子了。

随后考虑一个简单的想法:设我们拿到了一个数 \(p\),并有一个 \(q\) 满足 \(\exists v, pq = v^3\)。则我们只需要比较 \(p, q\) 的出现次数,取出现次数较多的就行了。

考虑对 \(p\) 删除了形如 \(k^3\) 的因子后会发生什么。设拿到的数的唯一分解是 \(\prod p_i^{c_i}\),我们讨论一下该如何得到 \(q\)
对每个 \(p_i \le \sqrt[3] s\)\(c_i \in \{0, 1, 2\}\)\(0\) 不用管,\(1, 2\) 则分别在 \(q\) 里乘入 \(p_i^2, p_i\) 即可。
剩下的质因子数和它的指数一定不超过 \(1\)。若这个数 \(\ge \sqrt s\),则它的平方一定超过了 \(s\),不用管。反之乘一个 \(p_i^2\)\(q\)

然后把所有 \(s\) 里的数扔进一个桶,遍历一下就行了。
注意把一定可以的放在同一个位置。

总时间复杂度 \(O(n \sqrt[3] s)\)



CF1583H

给定一棵有 \(n\) 个节点的树,每个点有点权 \(e_i\),每条边有重量限制 \(c_i\) 以及费用 \(t_i\)。两点间的费用定义为两点间简单路径上 \(t_i\) 的最大值。特别地,若起点与终点相同,则费用为 \(0\)

现在给出 \(q\) 个询问,每次给出 \(v,x\),查询从 \(x\) 节点出发,只经过 \(c_i \geq v\) 的边,能到达的最大点权是多少?前往这些点权最大节点之一,可能的最大费用是多少?

\(2\le n, q\le 2\times 10^5, 1\le e_i, c, t, v\le 10^9, 1\le a, b, x \le n\)

好像不是很难的样子。

看到题目条件反射离线,按 \(c_i\) 从大到小加边,加的过程中维护联通块信息。第一个询问可以直接扔在并查集上;第二个询问由于是路径最大值,用 kruscal 重构树转化成 lca 查询,同样可以用并查集维护。这需要保存最大值点集内 dfn 序最小最大的节点,最后和当前询问的节点取 lca,用最浅的即可。

理论上保存点集最浅 lca 也可以,但是我写假了。

总时间复杂度 \(O(n\log n)\),复杂度在 lca 或并查集。



ABC260Ex

给定 \(n\) 个小球,第 \(i\) 个小球上有一个数 \(a_i\)

将小球按照任意顺序排列,定义分值为相邻两个小球数不同的对数。

对于每一个 \(k \in [1, m]\),求对于所有排列小球的方案中,分值的 \(k\) 次方的和,对 \(998244353\) 取模。

\(n, m\le 2.5\times 10^5\)

又到了大家最喜欢的多项式环节
好像官方题解写得前言不搭后语的,我反正没看懂。

我们不妨先计算

\[f(x) = \sum_{P\in S_N} [C(P) = x] \]

随后对 \(k\) 的答案就好算了。

考虑设 \(p[m]\) 为恰好有 \(m\) 对相同颜色小球相邻的方案数,\(q[m]\) 是至少有 \(m\) 对相同颜色小球相邻的方案数。可以发现 \(f(x) = p[n - 1 - x]\)。根据经典二项式结论,

\[q[m] = \sum_{k = m}^{n - 1} \binom{k}{m} p[k]\quad \Rightarrow\quad p[m] = \sum_{k = m}^{n - 1} (-1)^{k - m} \binom{k}{m} q[k] \]

如果我们可以快速求得 \(q\),那我们就可以在 \(O(n\log n)\) 的复杂度内算得 \(p\)。接下来我们算 \(q\)

考虑第 \(c\) 种颜色的球数量是 \(m_c\) 种,最多有 \(m_c - 1\) 对颜色为 \(c\) 的同色相邻球。假设实际上有 \(a_c\) 对这样的对,则共有 \(\dbinom{m_c - 1}{a_c}\) 种方式来排列这些对。因此设 \(a\) 枚举 \(\sum a_i = m\) 的序列,我们可以直接写出

\[q[m] = \sum_a \left( \binom{n - m}{m_1 - k_1, m_2 - k_2 ,\dots, m_n - k_n} \prod_{c\ge 0} \binom{m_c - 1}{a_c} \right) \]

考虑翻转一下 \(q[0]\sim q[n]\),我们能得到

\[q[m] = \sum_a \left( \binom{m}{k_1, k_2 ,\dots, k_n} \prod_{c\ge 0} \binom{m_c - 1}{a_c} \right) \]

这种形式可以直接构造每个元素的 gf 然后卷起来。构造

\[G_c(x) = \sum_{k\ge 0} \binom{m_c - 1}{k} \frac{x^k}{k!} \]

可以知道翻转后的 \(q\) 满足

\[q[n] = \left[\frac{x^n}{n!}\right] \prod_{c} G_c(x) \]

这个可以直接作分治乘法 \(O(n\log^2 n)\) 地得到。

这样我们就算出了每个 \(f(x)\)。下面考虑如何算 \(F(k)\)。先写出形式:

\[F(k) = \sum_{x \ge 0} f(x) x^k \]

这个形式启发我们构造 \(F\) 的生成函数。假设是 \(H(z)\),我们有

\[H(z) = \sum_{k\ge 0} \sum_{x \ge 0} f(x) x^k z^k = \sum_{x \ge 0} f(x) \left(\sum_{k\ge 0} (xz)^k\right) = \sum_{x\ge 0} \frac{f(x)}{1 - xz} \]

这个可以直接作分治乘法 \(O(n\log^2 n)\) 地得到。

这样我们就算出了每个 \(F(k)\)

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

posted @ 2023-03-15 18:34  joke3579  阅读(201)  评论(4编辑  收藏  举报