#P12488. [集训队互测 2024] 轮盘赌游戏

    ID: 12293 Type: RemoteJudge 2000ms 2048MiB Tried: 0 Accepted: 0 Difficulty: 7 Uploaded By: Tags>集训队互测2024数论线段树合并

[集训队互测 2024] 轮盘赌游戏

题目描述

一个有 nn 颗子弹的轮盘,子弹依次编号为 0,1,n10,1,\dots n-1,每一颗子弹有一个卡壳概率 pip_i,表示如果即将激发的子弹是第 ii 颗,那么它有 pip_i 的概率卡壳不能被打出,有 1pi1-p_i 的概率成功打出。

轮盘赌游戏的规则如下:均匀随机地从 nn 颗子弹中选择一颗子弹开始进行轮盘赌,每一轮都会激发一颗子弹,假设某一轮激发第 ii 颗子弹,如果子弹成功打出了,那么游戏结束;否则轮盘会向后旋转 dd 颗子弹,游戏进入下一轮,也就是即将激发的子弹会变成第 (i+d)modn(i+d)\bmod n 颗。小 X 想要知道轮盘赌游戏结束轮数的期望。

由于子弹的生产都是 mm 颗一盒生产的,而且生产质量是一致的,所以可以认为存在一个长度为 mm 的序列 pip_i',使得对于轮盘里的 nn 颗子弹,有:pi=pimodm,i=0,1n1p_i=p_{i\bmod m}',i=0,1\dots n-1

为了增加游戏的乐趣,小 X 找到了 qq 枚特殊的子弹,他将会用这些子弹替换掉轮盘中的某一些子弹。小 X 将形式化地告诉你这个替换的过程。

小 X 的每一颗特殊子弹都可以看作是一个二元组 (x,y)(x,y),表示这一颗子弹可以替换掉轮盘中的编号为 xx 子弹,让这一颗子弹的卡壳概率变成 yy

小 X 的每一次替换都可以看作是一个二元组集合 SS(保证 SS 中的所有二元组 (x,y)(x,y)xx 互不相同),对于所有的 (x,y)S(x,y)\in S,小 X 会将序列上的编号为 xx 颗子弹替换掉,让这颗子弹的卡壳概率变成 yy

而对于一个二元组集合 SS(也就是一次替换),记 f(S)f(S) 为用完成替换之后的子弹进行轮盘赌游戏,游戏结束轮数的期望。

小 X 会以如下方式生成 q+tq+t 个替换:

  • 其中前 qq 个替换的生成方式如下:第 ii 个替换为 Si={(xi,yi)}S_i=\{(x_i,y_i)\}
  • tt 个替换的生成方式如下:第 q+jq+j 个替换是给定两个编号比它小且没有被选择过的替换,将其合并得到的结果。具体的,选择第 aja_jbjb_j 个替换(aj,bj<q+ja_j,b_j<q+j),那么有第 q+jq+j 个替换为 Sq+j=SajSbjS_{q+j}=S_{a_j}\cup S_{b_j}

小 X 想要求出 f()f(\varnothing),以及 f(Si),i=1,2q+tf(S_i),i=1,2\dots q+t,但是小 X 还要去解决其他的问题,所以他找到了你。

你需要告诉小 X f()f(\varnothing)f(Si)f(S_i)i=1,2q+ti=1,2\dots q+tnn 之后的结果,由于结果可能较大且不一定为整数,所以你只需要输出其对 998244353998244353 取模后的结果。

输入格式

第一行输入五个数 n,m,d,q,tn,m,d,q,t

第二行输入 mm 个数,其中第 ii 个数为 pi1p'_{i-1}

接下来的 qq 行,每行两个数 xi,yix_i,y_i,表示 Si={(xi,yi)}S_i=\{(x_i,y_i)\}

接下来的 tt 行,每行两个数 ai,bia_i,b_i,表示 Si+q=SaiSbiS_{i+q}=S_{a_i}\cup S_{b_i}

输出格式

1+q+t1+q+t 行,其中第一行为 n×f()n\times f(\varnothing),接下来第 i+1i+1 行为 n×f(Si)n\times f(S_i)

3 3 1 2 1
1 499122177 0
0 499122177
1 1
1 2
5
748683269
6
5

提示

样例解释

12499122177(mod998244353)\dfrac{1}{2}\equiv 499122177\pmod {998244353},所以可以认为三颗子弹的卡壳概率为 1,12,01,\dfrac{1}{2},0

对于 f()f(\varnothing),序列为 1,12,01,\dfrac{1}{2},0,第一颗子弹进行的期望轮数为 $2\times \dfrac{1}{2}+3\times \dfrac{1}{2}=\dfrac{5}{2}$,第二颗子弹进行的期望轮数为 $1\times \dfrac{1}{2}+2\times \dfrac{1}{2}=\dfrac{3}{2}$,第三颗子弹的期望轮数为 11,最终答案为 52+32+1=5\dfrac{5}{2}+\dfrac{3}{2}+1=5

S1={(0,12)}S_1=\{(0,\dfrac{1}{2})\},替换后的序列为 12,12,0\dfrac{1}{2},\dfrac{1}{2},0,答案为 $(1\times \dfrac{1}{2}+2\times \dfrac{1}{4}+3\times \dfrac{1}{4})+(1\times \dfrac{1}{2}+2\times \dfrac{1}{2})+1=\dfrac{17}{4}$,174748683269(mod998244353)\dfrac{17}{4}\equiv 748683269\pmod {998244353}

S2={(1,1)}S_2=\{(1,1)\},替换后的序列为 1,1,01,1,0,答案为 3+2+1=63+2+1=6

S3=S1S2={(0,12),(1,1)}S_3=S_1\cup S_2=\{(0,\dfrac{1}{2}),(1,1)\},替换后的序列为 12,1,0\dfrac{1}{2},1,0,答案为 (1×12+3×12)+2+1=5(1\times \dfrac{1}{2}+3\times \dfrac{1}{2})+2+1=5

数据范围

对于所有数据满足:1dn10161\le d\le n\le 10^{16}m5000m\le 50001q,t1051\le q,t\le 10^50xi<n0\le x_i< nij,xixj\forall i\neq j,x_i\neq x_j0pi,yi<9982443530\le p'_i,y_i <9982443531ai,bi<i+q1\le a_i,b_i<i+q 且保证所有的 ai,bia_i,b_i 均不相同,数据保证 gcd(d,n)=1\gcd(d,n)=1,且对于任何询问,所有子弹被卡壳的概率之积对 998244353998244353 取模不等于 11

  • Subtask 1(10 pts):1q,t,n1031\le q,t,n\le 10^3
  • Subtask 2(15 pts):1n1061\le n\le 10^6
  • Subtask 3(30 pts):d=1d=1
  • Subtask 4(20 pts):q=t=0q=t=0
  • Subtask 5(25 pts):无特殊限制。