题意:
猎人杀是一款风靡一时的游戏“狼人杀”的民间版本,他的规则是这样的:
一开始有 n n n 个猎人,第 i i i 个猎人有仇恨度 w i w_i wi ,每个猎人只有一个固定的技能:死亡后必须开一枪,且被射中的人也会死亡。
然而向谁开枪也是有讲究的,假设当前还活着的猎人有 [ i 1 … i m ] [i_1\ldots i_m] [i1…im],那么有 w i k ∑ j = 1 m w i j \frac{w_{i_k}}{\sum\limits_{j = 1}^{m} w_{i_j}} j=1∑mwijwik 的概率是向猎人 i k i_k ik 开枪。
一开始第一枪由你打响,目标的选择方法和猎人一样(即有 w i ∑ j = 1 n w j \frac{w_i}{\sum\limits_{j=1}^{n}w_j} j=1∑nwjwi 的概率射中第 i i i 个猎人)。由于开枪导致的连锁反应,所有猎人最终都会死亡,现在 1 1 1 号猎人想知道它是最后一个死的的概率。
答案对
998244353
998244353
998244353 取模。
题解:
考虑对于每一次开枪,要知道当前存活的人,才能知道概率,这样需要状压记录状态,显然不可行。于是考虑是否能将每次开枪看作可以选所有人,这样要考虑若选到已死的人,肯定不能照常,而是要继续选,直到选到未死的,这样就和原来的操作一样了。对于计算1号最后死的概率,直接算肯定不好算,故考虑容斥掉不合法的概率,枚举在它后面死的至少有i人,设
∑
i
=
1
n
w
i
=
A
\sum\limits_{i=1}^{n}w_i=A
i=1∑nwi=A,i后面死的人的w和为s,于是有:
a
n
s
=
∑
i
=
1
n
(
−
1
)
i
∗
w
1
A
∗
∑
j
=
0
∞
A
−
s
−
w
1
A
ans=\sum\limits_{i=1}^{n}(-1)^{i}*\frac{w_1}{A}*\sum\limits_{j=0}^{\infty}\frac{A-s-w_1}{A}
ans=i=1∑n(−1)i∗Aw1∗j=0∑∞AA−s−w1,化简得
∑
i
=
1
n
(
−
1
)
i
∗
1
s
+
w
1
\sum\limits_{i=1}^{n}(-1)^{i}*\frac{1}{s+w_1}
i=1∑n(−1)i∗s+w11,发现式子的变量是s,又注意到数据范围,A<=1e5,考虑对于每一个相同的s,计算出它的容斥系数,于是就按套路,对于每一个猎人,将其看成一个多项式
x
w
i
−
1
x^{w_i}-1
xwi−1,所有猎人卷积的每一项系数即是s的容斥系数,分治NTT求解即可。