[ABC271G] Access Counter Solution

更好的阅读体验戳此进入

题面

每天存在 24 个时间点,两人要访问一个网站,给定一个 AT 组成的长度为 24 的字符串,若为 T 则 Taka 有 X% 的概率成功访问,若为 A 则 Aoki 有 Y% 的概率成功访问,求该网站第 n 次被访问时是被 Aoki 访问的概率,对 998244353 取模。

Solution

首先看一眼这个题面与 n 的范围,就不难联想到矩阵快速幂,但是这题的难点我认为主要还是在状态的设计与转移上。

一个显而易见但较为重要的性质,即两次访问之间间隔的天数是易于统计的,重要的在于两次访问的时间点 i,j 之间的位置关系。

令对应时间点的访问成功概率为 pi,令一天中未发生任何访问的概率为 P=i=124(1pi),考虑预处理 dp(i,j) 表示上次在 i 访问本次在 j 访问的概率,如果两者之间的距离不超过一天,显然可以预处理,令 R 为从 i+1j1 的所有 1p 之积,则转移显然,即:

dp(i,j)=k=0+Pk×R×pj

显然和式为等比数列求和,且由题意可知公比 P<0,则继续推式子可以得到:

limn+1Pn1P×R×pj

显然 n+Pn0,则转化为:

R×pj1P

于是我们完成了 dp(i,j) 的预处理。


f(i,j) 表示第 i 次访问发生在 j 时刻的概率,有:

f(i,j)=k=124f(i1,k)×dp(k,j)

按照我们之前的想法挂到矩阵上:

[f(i,1)f(i,2)f(i,24)]=[f(i1,1)f(i1,2)f(i1,24)][dp(1,1)dp(1,2)dp(1,24)dp(2,1)dp(2,2)dp(2,24)dp(24,1)dp(24,2)dp(24,24)]

显然 f(0,i)=[i=24],初始时我们默认其最终选择的只能是 24,等价于从 0 开始,这样不会对我们的结果造成影响,那么最终形式:

[f(n,1)f(n,2)f(n,24)]=[001][dp(1,1)dp(1,2)dp(1,24)dp(2,1)dp(2,2)dp(2,24)dp(24,1)dp(24,2)dp(24,24)]n

答案统计一下所有 i 处是 Aoki 的 f(n,i) 之和即可,可以矩阵快速幂优化,令 d=24,则复杂度 O(d3logn),可以通过。

Code

UPD

update-2023_02_09 初稿