4043 病毒
2023-08-09 20:33:13 # OI # Problem

题面

内容

W 国决定攻略 Y 国的网络系统。

Y 国的网络系统由 nn 台编号依次为 1,2,,n1,2,\dots, n 的服务器组成。为了防止被入侵,Y 国每天都会更改网络结构,具体的,初始时服务器之间都没有边,然后 2in\forall 2\le i\le n,第 ii 台服务器会从编号在 [1,i1][1,i-1] 内的服务器中等概率选出一个服务器,向其连一条有向边。显然,最后 Y 国的网络系统会呈现出一个以 11 为根的内向树结构。

W 国早就在 Y 国的若干台服务器中种下病毒,假如有一天,存在某个点到 11 的路径上出现了所有带病毒的服务器,那么 Y 国的网络系统就会崩溃。现在,Y 国请求你帮他们计算,每次更改完网络结构后,网络系统崩溃的概率。

由于 Y 国并不知道哪些服务器被种了病毒,所以他们只能对 W 国的行为进行猜测后来询问你。具体的,Y 国会询问你 qq 次,每次给定一个点集 SiS_i,你需要求出,假如只有 SiS_i 内的服务器中了病毒,那每次更改完网络结构后,网络系统崩溃的概率是多少。

输入

第一行两个正整数 n,qn,q

接下来 qq 行:每行开头为一个正整数 kik_i,接下来有 kik_i 个互不相同的在 [1,n][1,n] 内的整数表示 SiS_i

输出

输出共 qq 行,第 ii 行你需要输出当只有 SiS_i 内的服务器中了病毒,那每天网络系统崩溃的概率,对 998244353998244353 取模。

样例1

输入

3 2
2 1 2
2 2 3

输出

1
499122177

样例2

输入

9 2
2 2 3
3 7 5 8

输出

499122177
370776474

提示

对于样例2:对于询问 22,可以发现如果网络系统崩溃,服务器 88 必须向服务器 77 连边,当服务器 77 向服务器 66 连边,则服务器 66 必须向服务器 55 连边,否则服务器 77 必须向服务器 55 连边,所以可能的网络结构有 4!8+4!58=11524!\cdot 8+4!\cdot5\cdot8=1152,而 11528!=135370776474(mod998244353){1152\over 8!}={1\over 35}\equiv 370776474\pmod {998244353}

思路

顺着边 点编号是递减的

从点i右边跳到i号点的概率永远是1i\frac{1}{i},所以在所有点中病毒的情况下,让他们排成一条链的概率就是

给定一个1n1\sim{n}的子集SS,询问若ii的父亲在[1,i1][1,i-1]中等概率生成,那么从最后一个点到一号点经过所有SS中的节点的概率,答案对998244353998244353取模。

首先,i+1i+1ii的概率是1i\frac{1}{i}i+1i+1的父亲是ii的概率是1i\frac{1}{i}

i+2i+2ii的概率是直接跳到ii的概率加上先跳到i+1i+1再跳到ii,也就是 1i+1+1i+1×1i=1i\frac{1}{i+1}+\frac{1}{i+1}\times{\frac{1}{i}}=\frac{1}{i},通过数学归纳法得知,ii右边的点跳到ii的概率都是1i\frac{1}{i}

由于每次跳这些时间是相互独立的,所以原题答案为:

i=1m11xi\prod_{i=1}^{m-1}{\frac{1}{x_i}}

最后一个分数取模不要忘了求逆元。