2023.1.30 整理

本文最后更新于:2023年2月2日 早上

$\mathcal{Let’s\ roll.}$

谨以此博文,纪念 L_fire。

没想到 2023 年一个月过去了才重新开始写(

之前断更的有点厉害啊。

考的还算说的过去吧。

T1 签到题,T2 概率期望,T3 是奇妙的数据结构,T4 是模拟接高精。

问题就是一些学过的东西复习不够及时,一些套路还不是很会。

想期望的能力还是太烂了,多学学吧。

码力倒提升了点,至少模拟能敲出来了。(

T1 不写了,有手就行。

Analysis

T2

这一堆颜色……考虑期望是具有可加性的,我们就分别考虑每个颜色的贡献。

考虑该颜色时,其余颜色都可以视为一种颜色,毕竟都要变成该颜色,因此只要不一样就是异教徒(

设当前颜色为白色,其余皆为黑色。

然后我们开始想状态:

阶段是什么?发现到了第 i 个球并不能很好的表示状态(因为不好算),那么我们就转而去设有 i 个白球的状态。

来一手疯狂的 push 柿子就得到了下边的方程:

$dp[i] = \dfrac{C^2_n}{i(n - i)} + \dfrac{1}{2} * dp[i - 1] + \dfrac{1}{2} * dp[i + 1]$

好像还是蛮对的,但是有破绽!

破绽就是,你有没有想过一个问题,$dp[0]$ 有意义吗?

一个白球都没有,岂不是正无穷次操作?

太妙了,然后你每个状态都成了正无穷,直接爆炸。

发觉这东西是个少一个限制的东西,我们必须要限制向能成功的方向去做。

$dp[i]$ 应该是有 i 个白球,在能全变成白球的条件下的期望步数。

我们先来一手概率,设 $g[i]$ 表示当前有 i 个白球全变成 n 个的概率。

易得:

$g[i] = \dfrac{1}{2}g[i - 1] + \dfrac{1}{2}g[i + 1]$。

初始化是:$g[0] = 0, g[n] = 1$。(wljss 这里打错了 TwT

根据上边那个式子,移项,乘 2,然后发现这是个等差数列。

公差就可以弄出来,得出 $g[i] = \dfrac{i}{n}$。

根据期望的定义,我们可以用 $g[i]$ 来弄出新的 dp 的两个新的系数。

然后我们弄出:

$dp[i] = \dfrac{C^2_n}{i(n - i)} + \dfrac{(i - 1)}{2i} * dp[i - 1] + \dfrac{i + 1}{2i} * dp[i + 1]$

然后发现这个东西是可以高斯消元的,可以用 $\mathcal{O}(n^3)$ 的复杂度通过 80 pts 的数据。

但是我们发现一个问题,这个矩阵它并不满,而且几乎全在对角线附近。

然后我们就可以改的少亿点,这样就可以 $\mathcal{O}(n)$ 过了。

T3

我说这是个国家集训队的题你信吗?

我说这是个 CTSC 选拔的模拟赛的题你信吗?

不过赛时还是拿到了 64pts 的成绩,不是太高但也说得过去。(可能只是 wljss 的数据太善良了?

赛场上我是看出了一些端倪的,就是存在一个等差数列,正序逆序都行,序列就可以了,满足这个序列长度至少为 3 即可。

然后我直接一手 DP(

正解当然不是 DP,毕竟我想了很长时间也想不出来这东西怎么优化(

考虑这是一个全排列的问题,所以先一手转换成桶来做。

当我们处理到 i 时,将 $t[a[i]]$ 标记为 1。

如果此时以 $a[i]$ 为中心,我们将左右边界尽可能地扩展,直到有一边顶到了边界,然后拿出这一段,这会是一个 01 串,1 表示这个数在 $a[i]$ 之前出现过,0 表示未出现过,如果发现这并不回文,也就是满足 $t[a[i] -j] \ne t[a[i] + j]$

那么是不是说明此时满足的题目的条件?

那我们该如何快速判断回文串呢?

我们用树状数组维护一个动态 Hash 就可以了。


2023.1.30 整理
http://dxrprime.github.io/2023/02/02/2023.1.30/
作者
Shelter Prime
发布于
2023年2月2日
许可协议