旧文
D - 燃起来了!
期望题。
$$ 令 \space p = a/b, \space d = x/y, \space r = x\%y, E_i 为经过i次连续失败后,第i+1成功的时间长度的期望\\ E_0 = y + p \cdot E_0 + (1-p) \cdot E_1 \\ E_1 = y + p \cdot E_0 + (1-p) \cdot E_2 \\ E_2 = y + p \cdot E_0 + (1-p) \cdot E_3 \\ ... \\ E_{d-1} = y + p \cdot E_0 + (1-p) \cdot E_d \\ E_d = r \\ \Rightarrow E_0 = r + y \cdot \sum_{i=1}^{d}{(\frac{1}{1-p})^i} \\ \Rightarrow E_0 = r + y \cdot \frac{(1-p)^d-1}{(1-p)^d \cdot (-p)} $$
|
|
E - 全自动窗口调度算法
好像大家,把序列存下来纯模拟的多,我是维护每个窗口的最早空闲时间,然后更新就行。
|
|
F - Z-O 平衡
做法1 - $O(n)$
大概骚扰luoyue一段时间后,明白了
考虑数字从左到右一个一个加入序列,每次加入,考虑新加入的数对前面所有序列和自己的总贡献。
由于奇偶的作用不一致,很自然地可以考虑一个序列的奇数个数-偶数个数
不同时它对答案的贡献,即需要几次操作,会得到以下序列:
|
|
可以找到,序列奇 - 偶
为正数/负数,奇数/偶数,增加/减少时的影响,通过一个数组+偏移量,维护整个序列。
base-delta
永远是0
的位置。
upd. 有些佬表示好像还是不太明白变量含义,我这里统一解释下:
在当前偏移情况下,考虑所有连续子序列,negE 是奇数-偶数的个数
是负数且偶数
的个数,negO 是奇数-偶数的个数
是负数且奇数
的个数,pos就是正的奇数/偶数。zero就是奇数-偶数 = 0
的个数,因为在发现的规律里,0是特殊的,需要额外记录。
|
|
做法2 - $O(nlogn)$
口糊一下好了,因为先看的O(n)做法
和第二种一样做偏移,用两个树状数组记录下前面序列的各个奇数 - 偶数
的个数,一个记录结果为奇数的各个长度的个数,一个记录结果为偶数的各个长度的个数,树状数组来维护正负的个数的信息,然后强行把第一种$O(1)$维护的东西变成$O(logn)$维护的东西((逃
G - 最强平行组合
因为选课没有限制选课相同,可以用背包最大化同个学分下的经验。
再用枚举二进制状态的做法,把每个学分的合法子集的最大值归为自己的值。
这种做法理论复杂度极高,但是出题人放过了(
求教std做法
|
|
I - 你相信光吗
网络流板子题。
几个注意点,题目是有向图,加容量和恢复容量有些细节。
因为其实是赛时的代码再赛后略修一下,现在已经忘得差不多了
|
|
J - bzy 的出行
xorzj说,Cow Relays G 是原题,需要的前置知识有,矩阵快速幂、floyd。
因为floyd和矩阵乘法的类似性(是可以这么说的么),用类似矩阵快速幂的形式预处理出g[k, i, j]
,代表经过$2^k$条边,i 到 j 的最短路径长度。
不做预处理时间复杂度是$O(T \cdot n^3 \cdot log(1e9))$,会被卡飞。
然后有一个优化的点是,每次只有一个起点,所以求答案的那个数组可以用一维的,把时间复杂度降下来。
下方码风较凌乱
|
|