题目背景
时限 4 秒 内存 512MB
题目描述
小 S 在和小 F 玩一个叫“斗地主”的游戏。
可怜的小 S 发现自己打牌并打不过小 F,所以他想要在洗牌环节动动手脚。
一副牌一共有 n 张牌,从上到下依次标号为 1∼n。标号为 i 的牌分数是 f(i)。在本题,f(i) 有且仅有两种可能:f(i)=i 或 f(i)=i2。
洗牌的方式和我们日常生活中的比较类似,以下我们用形式化的语言来定义: 洗牌环节一共分 m 轮,这 m 轮洗牌依次进行。第 i 轮洗牌时:
- 小 S 会拿出从最上面往下数的前 Ai 张牌。这样这副牌就被分成了两堆:第一堆 是最上面的 Ai 张牌,第二堆是剩下的 n−Ai 张牌,且这两堆牌内相对顺序不变。 特别地,当Ai=n 或 Ai=0 时,有一堆牌是空的。
- 接下来对两堆牌进行合并,从而产生新的第三堆牌。当第一堆牌还剩下 X 张,第二堆牌还剩下 Y 张的时候,以 X+YX 的概率取出第一堆牌的最下面的牌,并将它 放入新的第三堆牌的最上面, X+YY 的概率取出第二堆牌的最下面的牌,并将它放入新的第三堆牌的最上面
- 重复操作 2,一直取到两堆牌都为空为止。这样我们就完成了一轮洗牌。
因为洗牌过程是随机的,所以小 S 发现自己没法知道某个位置上具体是哪张牌。但小 S 想问你在经历了这 m 轮洗牌后,某个位置上的牌的期望分数是多少。小 S 一共会问你 Q 个这样的问题。
输入格式
输入的第一行包含三个正整数 n,m,type,分别表示牌的数量,洗牌的轮数与 f(i) 的类型。当 type=1 时,f(i)=i。当 type=2 时,f(i)=i2。
接下来一行,一共 m 个整数,表示 A1∼Am。
接下来一行一个正整数 Q,表示小 S 的询问个数。 接下来 Q 行,每行一个正整数 ci,表示小 S 想要知道从上往下第 ci 个位置上的牌的期望分数。
保证 1≤ci≤n。
输出格式
输出一共 Q 行,每行一个整数,表示答案在模 998244353 意义下的取值。
即设答案化为最简分式后的形式为 ba,其中 a 和 b 互质。输出整数 x 使得 bx≡a(mod998244353) 且 0≤x<998244353。可以证明这样的整数 x 是唯一的。
4 1 1
3
1
1
249561090
提示
更多样例
您可以通过附加文件获得更多样例。
样例 2
见附加文件中的 landlords/landlords2.in
与 landlords/landlords2.ans
。
样例 3
见附加文件中的 landlords/landlords3.in
与 landlords/landlords3.ans
。
样例输入输出 1 解释
- 有 41 的概率从上到下的最终结果是 {1,2,3,4}。
- 有 41 的概率从上到下的最终结果是 {1,2,4,3}。
- 有 41 的概率从上到下的最终结果是 {1,4,2,3}。
- 有 41 的概率从上到下的最终结果是 {4,1,2,3}。
所以最终有 41 的概率第一个位置是 4,有 43 的概率第一个位置是 1,所以第一个位置的期望分数是 47。
为了帮助你们更直观地了解洗牌的过程,我们在下面画出了结果是 {1,4,2,3} 的过程。
数据规模与约定
对于全部的测试点,保证 3≤n≤107,1≤m,Q≤5×105,0≤Ai≤n,type∈{1,2}。
每个测试点的具体限制见下表:
测试点 |
n |
m |
type= |
其他性质 |
1 |
≤10 |
≤1 |
1 |
无 |
2 |
≤80 |
3 |
2 |
4 |
≤100 |
≤5×105 |
所有 Ai 相同 |
5 |
≤107 |
1 |
无 |
6 |
7 |
8 |
2 |
9 |
10 |
请注意我们并没有保证 Q≤n。
提示
这里我们给出离散型随机变量 X 的期望 E[x] 的定义:
设离散随机变量 X 的可能值是 X1,X2,…Xk,Pr[X1],Pr[X2],…,Pr[Xk] 为 X 取对应值的概率,则 X 的期望为:
E[x]=i=1∑kXi×Pr[Xi]