C0486 [NOI2019Day2-B]斗主地

内存限制:512 MB 时间限制:4000 ms

题目描述

小 S 在和小 F 玩一个叫「斗地主」的游戏。

可怜的小 S 发现自己打牌并打不过小 F,所以他想要在洗牌环节动动手脚。

一副牌一共有 $n$ 张牌,从上到下依次标号为 $1$ ~ $n$。标号为 $i$ 的牌分数是 $f(i)$。在本题,$f(i)$ 有且仅有两种可能:$f(i)=i$ 或 $f(i)=i^2$。

洗牌的方式和我们日常生活中的比较类似,以下我们用形式化的语言来定义:

洗牌环节一共分 $m$ 轮,这 $m$ 轮洗牌依次进行。第 $i$ 轮洗牌时:

  1. 小 S 会拿出从最上面往下数的前 $A_i$ 张牌。这样这副牌就被分成了两堆:第一堆是最上面的 $A_i$ 张牌,第二堆是剩下的 $n-A_i$ 张牌,且这两堆牌内相对顺序不变。特别地,当 $A_i=n$ 或 $A_i=0$ 时,有一堆牌是空的。
  2. 接下来对两堆牌进行合并,从而产生新的第三堆牌。当第一堆牌还剩下 $X$ 张,第二堆牌还剩下 $Y$ 张的时候,以 $\dfrac{X}{X+Y}$ 的概率取出第一堆牌的最下面的牌,并将它放入新的第三堆牌的最上面,$\dfrac{X}{X+Y}$的概率取出第二堆牌的最下面的牌,并将它放入新的第三堆牌的最上面。
  3. 重复操作 2,一直取到两堆牌都为空为止。这样我们就完成了一轮洗牌。

因为洗牌过程是随机的,所以小 S 发现自己没法知道某个位置上具体是哪张牌。但小 S 想问你在经历了这 $m$ 轮洗牌后,某个位置上的牌的期望分数是多少。小 S 一共会问你 $Q$ 个这样的问题。

输入格式

输入的第一行包含三个正整数 $n,m,type$,分别表示牌的数量,洗牌的轮数与 $f(i)$ 的类型。当 $type=1$ 时,$f(i)=i$。当 $type=2$ 时,$f(i)=i^2$。

接下来一行,一共 $m$ 个整数,表示 $A_1$ ~ $A_m$。

接下来一行一个正整数 $Q$,表示小 S 的询问个数。

接下来 $Q$ 行,每行一个正整数 $c_i$,表示小 S 想要知道从上往下第 $c_i$ 个位置上的牌的期望分数。保证 $1 \le c_i \le n$。

输出

输出一共 $Q$ 行,每行一个整数,表示答案在模 $998244353$ 意义下的取值。

即设答案化为最简分式后的形式为 $\frac{a}{b}$,其中 $a$ 和 $b$ 互质。输出整数 $x$ 使得 $bx \equiv a($ mod $998244353)$ 且 $0 \le x < 998244353$。可以证明这样的整数 $x$ 是唯一的。

样例

样例输入 1

4 1 1 3 1 1

样例输出 1

249561090

提示

【样例说明】

有 $\frac{1}{4}$ 的概率从上到下的最终结果是 $\{1,2,3,4\}$。

有 $\frac{1}{4}$ 的概率从上到下的最终结果是 $\{1,2,4,3\}$。

有 $\frac{1}{4}$ 的概率从上到下的最终结果是 $\{1,4,2,3\}$。

有 $\frac{1}{4}$ 的概率从上到下的最终结果是 $\{4,1,2,3\}$。

所以最终有 $\frac{1}{4}$ 的概率第一个位置是 $4$,有 $\frac{3}{4}$ 的概率第一个位置是 $1$,所以第一个位置的期望分数是 $\frac{7}{4}$。

为了帮助你们更直观地了解洗牌的过程,我们在下面画出了结果是 $\{1,4,2,3\}$ 的过程:

image.png

【数据范围与提示】

对于所有的测试点:$3 \le n \le 10^7,1 \le m,Q \le 5 \times 10^5,0 \le A_i \le n,type \in \{1,2\}$。

每个测试点的具体限制见下表:

image.png

请注意我们并没有保证$Q \le n$。

这里我们给出离散型随机变量 $X$ 的期望 $\mathbb{E}[x]$ 的定义:

设离散随机变量 $X$ 的可能值是 $X_1,X_2,\cdots,X_k,Pr[X_1],Pr[X_2],\cdots,Pr[X_k]$,为 $X$ 取对应值的概率。则 $X$ 的期望为

$\mathbb{E}[x] = \sum^k_{i=1}X_iPr[X_i]$