DTOJ 4872. 真的

题意

你正在一个数轴上随机游走。一开始,你在位置 0 0 0。每一时刻,你有 $ \frac{1}{2}$ 的概率往左走,还有 1 2 \frac{1}{2} 21的概率往右走。定义一个方向系数 t t t,当你往左走时 t t t − 1 -1 1,反之往右走 t t t + 1 +1 +1。同时,我们给定了一个长度为 N N N 的序列 A 1 , A 2 , … , A N A_1,A_2,…,A_N A1,A2,,AN 。假如当前在位置 x x x ,那么在选定方向之后,下一步有 A k ∑ i = 1 N A i \frac{A_k}{\sum_{i=1}^{N}{A_i}} i=1NAiAk 的概率在 x + t × k x+t \times k x+t×k

假如走完之后,你落在了某一个位置 y < 0 y<0 y<0,那么你会直接到达 − y -y y 的位置;假如你落在了某一个位置 y > N y>N y>N,那么你会直接到达 2 × N − y 2 \times N-y 2×Ny 的位置。

现在你按照上述规则,随机游走了 K K K步。请你求出,你最终到达每个点的概率在模 998244353 998244353 998244353 意义下的结果。显然,最终到达的一定是 0 0 0 N N N 之间的某一个整点。

Subtask 1 (3pts): K = 0 K=0 K=0

Subtask 2 (12pts): N ≤ 100 , K ≤ 5000 N \le 100,K \le 5000 N100,K5000

Subtask 3 (23pts): N × K ≤ 5 × 1 0 5 N \times K \le 5 \times 10^{5} N×K5×105

Subtask 4 (11pts): $ \forall 2 \le i \le N,A_i=0$

Subtask 5 (27pts): N ≤ 1 0 3 N \le 10^3 N103

Subtask 6 (24pts):无特殊限制。

对于全部数据: 1 ≤ N ≤ 1 0 5 , 0 ≤ K ≤ 1 0 18 , 1 ≤ ∑ i = 1 N A i ≤ 1 0 8 1 \le N \le 10^5, 0 \le K \le 10^{18},1 \le \sum_{i=1}^{N}{A_i} \le 10^8 1N105,0K1018,1i=1NAi108

题解

考虑游走的过程,发现是一个碰壁就回退的循环,考虑构造循环卷积。如果循环节是n显然不太行,发现从 0 0 0 n n n再回到 0 0 0可看作一个循环节,于是构造一个长度为 2 n 2n 2n的多项式, 0 0 0 n n n项依次是 0 , . . . , n 0,...,n 0,...,n代表从 0 0 0走到 n n n,后 n − 1 n-1 n1项依次是 n − 1 , . . . , 1 n-1,...,1 n1,...,1代表从 n n n走到 0 0 0。由于两个方向的概率都是 1 / 2 1/2 1/2,这样向原来方向走相当于右移,向相反方向走相当于左移,如果越界的话则在 % 2 n \%2n %2n的意义下是等价的,故直接循环卷积快速幂即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值