题意:
有 一 个 空 数 列 a 有一个空数列a 有一个空数列a
每 次 从 1 − m 中 随 机 选 一 个 数 x , 放 入 数 列 a 每次从1-m中随机选一个数x,放入数列a 每次从1−m中随机选一个数x,放入数列a
如 果 数 列 a 所 有 数 的 g c d 为 1 , 则 停 止 如果数列a所有数的gcd为1,则停止 如果数列a所有数的gcd为1,则停止
否 则 重 复 选 数 操 作 否则重复选数操作 否则重复选数操作
求 数 列 长 度 的 期 望 求数列长度的期望 求数列长度的期望
题解:
可 以 发 现 , 如 果 数 列 中 已 经 有 数 可以发现,如果数列中已经有数 可以发现,如果数列中已经有数
不 论 你 往 里 放 哪 个 数 , 这 个 数 列 的 g c d 都 不 会 增 大 不论你往里放哪个数,这个数列的gcd都不会增大 不论你往里放哪个数,这个数列的gcd都不会增大
只 会 保 持 当 前 状 态 , 或 者 比 当 前 状 态 小 只会保持当前状态,或者比当前状态小 只会保持当前状态,或者比当前状态小
这 就 奠 定 了 D P 的 基 础 , 但 是 需 要 倒 着 创 建 和 转 移 这就奠定了DP的基础,但是需要倒着创建和转移 这就奠定了DP的基础,但是需要倒着创建和转移
这 样 就 可 以 创 建 一 个 d p [ i ] 表 示 当 前 数 列 的 g c d 为 i 时 , 最 终 能 够 停 止 的 期 望 长 度 这样就可以创建一个dp[i]表示当前数列的gcd为i时,最终能够停止的期望长度 这样就可以创建一个dp[i]表示当前数列的gcd为i时,最终能够停止的期望长度
然 后 考 虑 转 移 方 程 然后考虑转移方程 然后考虑转移方程
当 前 状 态 i 可 以 由 1 − m 和 它 g c d 的 状 态 转 移 过 来 当前状态i可以由1-m和它gcd的状态转移过来 当前状态i可以由1−m和它gcd的状态转移过来
转 移 方 程 为 d p i = 1 + ∑ i = 1 n d p [ g c d ( i , j ) ] n 转移方程为dp_i=1+\sum_{i=1}^n\frac{dp[gcd(i,j)]}{n} \quad 转移方程为dpi=1+∑i=1nndp[gcd(i,j)]
累 加 中 表 示 随 机 从 1 − n 选 一 个 数 进 行 放 入 累加中表示随机从1-n选一个数进行放入 累加中表示随机从1−n选一个数进行放入
选 每 个 数 的 期 望 是 d p [ g c d ( i , j ) ] , 概 率 为 1 n 选每个数的期望是dp[gcd(i,j)],概率为\frac{1}{n} 选每个数的期望是dp[gcd(i,j)],概率为n1
由 于 需 要 的 长 度 增 加