DTOJ#4170. 「PKUWC2018」猎人杀

题意:

猎人杀是一款风靡一时的游戏“狼人杀”的民间版本,他的规则是这样的:

一开始有 n n n 个猎人,第 i i i 个猎人有仇恨度 w i w_i wi ,每个猎人只有一个固定的技能:死亡后必须开一枪,且被射中的人也会死亡。

然而向谁开枪也是有讲究的,假设当前还活着的猎人有 [ i 1 … i m ] [i_1\ldots i_m] [i1im],那么有 w i k ∑ j = 1 m w i j \frac{w_{i_k}}{\sum\limits_{j = 1}^{m} w_{i_j}} j=1mwijwik 的概率是向猎人 i k i_k ik 开枪。

一开始第一枪由你打响,目标的选择方法和猎人一样(即有 w i ∑ j = 1 n w j \frac{w_i}{\sum\limits_{j=1}^{n}w_j} j=1nwjwi 的概率射中第 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=1nwi=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=1n(1)iAw1j=0AAsw1,化简得 ∑ i = 1 n ( − 1 ) i ∗ 1 s + w 1 \sum\limits_{i=1}^{n}(-1)^{i}*\frac{1}{s+w_1} i=1n(1)is+w11,发现式子的变量是s,又注意到数据范围,A<=1e5,考虑对于每一个相同的s,计算出它的容斥系数,于是就按套路,对于每一个猎人,将其看成一个多项式 x w i − 1 x^{w_i}-1 xwi1,所有猎人卷积的每一项系数即是s的容斥系数,分治NTT求解即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值