近期总结 2023.10.28

Luogu4156 论战捆竹竿#

题意:给出一个长度 n 的字符串 s,有一个空字符串 t。每次可以把 s 接在 t 后面,相同部分可以重叠。求任意操作后 |t|[l,r] 有多少种可能。

1n5×105, 1lr1018


不难发现,每次延长的长度都 period(s),而且,一定存在一张方案满足 s 的所有周期都能任意次延长。

考虑同于最短路,但是周期数量可能很多,不能很完美地处理。

结论:一个字符串的 Border 最多可以划分成 O(logn) 个等差数列。

同样的,周期也可以。

考虑一个周期长度的等差数列 d,c+d,2c+d,3c+d,...,Lc+d

有个 d 很烦,考虑在 modd 意义下跑同于最短路,这样每次步长就是 c,直接分环做单调队列即可。

但是不止一个等差数列,这要求我们变模数。考虑先用 dis[i] 更新 dis[dis[i]modnewmod],然后不断跳 oldmod 更新即可。

时间复杂度 O(nlogn)


Luogu4707 重返现世#

题意:n 种材料,你需要收集至少 k 种。每秒随机出现一种材料(可以和之前的重复),每种材料出现概率为 mpi,其中 m=i=1npi。问期望多少秒,模 998244353

1n1000, 1m10000, 1kn, nk10

考虑 min-max 容斥。

ti 表示材料 i 第一次出现时间。

g=nk+1,那么相当于求 t 中第 g 大的期望值。

答案即为

E(g-th max(ti))=SU(1)|S|g(|S|1g1)E(miniS(ti))

我们相当于算后面那坨东西 SU(1)|S|g(|S|1g1)E(miniS(ti))

注意 E(miniS(ti)) 相当于第一次出现 S 中的材料的时间,那么在此之前出现的材料都不是 S 中的,不难算出其值为 miSpi

原式=SU(1)|S|g(|S|1g1)E(min(ti))=SU(1)|S|g(|S|1g1)miSpi=xmxSU,iSpi=x(1)|S|g(|S|1g1)

后面的式子具有良好的递推性质。

f[i,j,k]=S{1,2,...,i},tSpt=j(1)|S|k(|S|1k1)

考虑 f[i,j,k]f[i+1,,] 的贡献。

  • 不选,f[i,j,k]f[i+1,j,k]

  • 选,f[i,j,k]×(1)f[i+1,j+pi+1,k+1], f[i,j,k]f[i+1,j+pi+1,k]

时间复杂度 O(nm)


AGC038E Gachapon#


n 个数 1...n,每次随机生成其中一个数,生成 i 的概率为 mpi,其中 m=pi。当 i[1,n]i 至少生成了 ai 次后,停止生成。求生成的期望次数,模 998244353

pi,ai>1, 1pi,ai,n400


tii 生成 ai 次时的时间,答案:E(max(ti))

转化为 S(1)|S|+1E(miniS(ti))

考虑期望线性性,对于 S,在生成数的过程中,设 bii 在生成中的出现次数,那么其对应的 b 集合 Sb 有许多不同的状态,根据 套路,考虑对于每个状态计算到达他的期望概率以及他停留的期望时间。合法的 Sb 状态一共 iSai 种,但每种概率不同,是个多重集排列数。不难发现每种停留的概率都是 miSpi

f[i,j,k] 表示选择了 {1,2,...i} 的一个集合 SxSpx=j,此时选择集合的 Sb 之和为 k,方案数系数的总和。

那么

  • 不选 i+1f[i,j,k]f[i+1,j,k]

  • i+1,枚举选了 c 个,注意算 S 中出现数的概率是条件概率,分母最后计算,f[i,j,k]×(1)×(k+cc)×pi+1cf[i+1,j+pi+1,k+c]

时间复杂度 O(nap)

出处:https://www.cnblogs.com/Sktn0089/p/17793475.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   Lgx_Q  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示