#1846. [NOI2019] Landdrol
[NOI2019] Landdrol
题目描述
小 S 在和小 F 玩一个叫「斗地主」的游戏。
可怜的小 S 发现自己打牌并打不过小 F,所以他想要在洗牌环节动动手脚。
一副牌一共有 张牌,从上到下依次标号为 。标号为 的牌分数是 。在本题, 有且仅有两种可能: 或 。
洗牌的方式和我们日常生活中的比较类似,以下我们用形式化的语言来定义:
洗牌环节一共分 轮,这 轮洗牌依次进行。第 轮洗牌时:
- 小 S 会拿出从最上面往下数的前 张牌。这样这副牌就被分成了两堆:第一堆是最上面的 张牌,第二堆是剩下的 张牌,且这两堆牌内相对顺序不变。特别地,当 或 时,有一堆牌是空的。
- 接下来对两堆牌进行合并,从而产生新的第三堆牌。当第一堆牌还剩下 张,第二堆牌还剩下 张的时候,以 的概率取出第一堆牌的最下面的牌,并将它放入新的第三堆牌的最上面, 的概率取出第二堆牌的最下面的牌,并将它放入新的第三堆牌的最上面。
- 重复操作 2,一直取到两堆牌都为空为止。这样我们就完成了一轮洗牌。
因为洗牌过程是随机的,所以小 S 发现自己没法知道某个位置上具体是哪张牌。但小 S 想问你在经历了这 轮洗牌后,某个位置上的牌的期望分数是多少。小 S 一共会问你 个这样的问题。
输入格式
从文件 landlords.in
中读入数据。
输入的第一行包含三个正整数 ,分别表示牌的数量,洗牌的轮数与 的类型。当 时,。当 时,。
接下来一行,一共 个整数,表示 。
接下来一行一个正整数 ,表示小 S 的询问个数。
接下来 行,每行一个正整数 ,表示小 S 想要知道从上往下第 个位置上的牌的期望分数。保证 。
输出格式
输出到文件 landlords.out
中。
输出一共 行,每行一个整数,表示答案在模 意义下的取值。
即设答案化为最简分式后的形式为 ,其中 和 互质。输出整数 使得 且 。可以证明这样的整数 是唯一的。
样例
4 1 1
3
1
1
249561090
有 的概率从上到下的最终结果是 。
有 的概率从上到下的最终结果是 。
有 的概率从上到下的最终结果是 。
有 的概率从上到下的最终结果是 。
所以最终有 的概率第一个位置是 ,有 的概率第一个位置是 ,所以第一个位置的期望分数是 。
为了帮助你们更直观地了解洗牌的过程,我们在下面画出了结果是 的过程:
数据范围与提示
对于所有的测试点:$3 \le n \le 10^7 , 1 \le m, Q \le 5 \times 10^5 , 0 \le A_i \le n , \text{type} \in \{1, 2\}$。
每个测试点的具体限制见下表:
测试点编号 | 其他性质 | |||
---|---|---|---|---|
无 | ||||
所有 均相同 | ||||
无 | ||||
请注意我们并没有保证 。
这里我们给出离散型随机变量 的期望 的定义:
设离散随机变量 的可能值是 ,$\text{Pr}[X_1], \text{Pr}[X_2], \ldots , \text{Pr}[X_k]$ 为 取对应值的概率。则 的期望为