LOJ#2541 猎人杀】的更多相关文章

解:step1:猎人死了之后不下台,而是继续开枪,这样分母不变...... 然后容斥,枚举猎人集合s,钦定他们在1之后死.定义打到1的时候结束,枚举游戏在i轮时结束. 发现式子是一个1 + x + x2 + x3 + ... = 1 / (1 - x) 但是枚举子集不现实,发现值域很小,我们用小Z的礼物的套路,考虑计算每个值的容斥系数是多少. 然后就NTT加速了.预处理逆元卡常. #include <bits/stdc++.h> typedef long long LL; typedef st…
题意 LOJ #2541. 「PKUWC 2018」猎人杀 题解 一道及其巧妙的题 , 参考了一下这位大佬的博客 ... 令 \(\displaystyle A = \sum_{i=1}^{n} w_i\) , \(B\) 是已死猎人的 \(w_i\) 的总和 , \(P_i\) 是 \(i\) 当前要被杀死的概率 ... (抄博客咯) 不难有 \(\displaystyle P_i = \frac{w_i}{A-B} \tag{1}\) 如果 不考虑猎人死没死 , 都能被当做目标 qwq (鞭…
这样$ PKUWC$就只差一道斗地主了 假装补题补完了吧..... 这题还是挺巧妙的啊...... LOJ # 2541 题意 每个人有一个嘲讽值$a_i$,每次杀死一个人,杀死某人的概率为$ \frac{a_i}{a_{alive}}$,求第一个人最后死的概率 数据范围:$ 1 \leq a_i \leq 10^5,\sum\limits_{i=1}^n a_i \leq 10^5$ $Solution$ 以下部分用$ val$表示所有人的嘲讽值之和 先讲讲$ n*val$的$ DP$ 用$…
Description 猎人杀是一款风靡一时的游戏"狼人杀"的民间版本,他的规则是这样的: 一开始有 n个猎人,第 i 个猎人有仇恨度 wi.每个猎人只有一个固定的技能:死亡后必须开一枪,且被射中的人也会死亡. 然而向谁开枪也是有讲究的,假设当前还活着的猎人有\([i_1...i_m]\),那么有\(w_{i_k}\over \sum\limits_{j=1}^{m} w_{i_j}\)的概率是向猎人\(i_k\) 开枪 一开始第一枪由你打响,目标的选择方法和猎人一样(即有\(w_{i…
[LOJ2541][PKUWC2018]猎人杀(容斥,FFT) 题面 LOJ 题解 这题好神仙啊. 直接考虑概率很麻烦,因为分母总是在变化. 但是,如果一个人死亡之后,我们不让他离场,假装给他打一个标记(猎人印记???) 如果在一次选择的时候选中了一个已经被打过标记的人,那么我们就重新做一次选择. 这样显然没有任何影响. 现在考虑如何求第一个人最后一个被打上标记的概率. 我们容斥一下,枚举一下哪些人会在\(1\)之后被选择,那么容斥系数就是\((-1)\)的人数次方. 那么对于钦定的在\(1\)…
「PKUWC2018」猎人杀 解题思路 首先有一个很妙的结论是问题可以转化为已经死掉的猎人继续算在概率里面,每一轮一直开枪直到射死一个之前没死的猎人为止. 证明,设所有猎人的概率之和为 \(W\) ,当前已经死掉了概率之和为 \(T\) 的猎人,原问题下一个射死 \(i\) 的概率 \(P\) 为 \[ P =\dfrac{w_i}{W-T} \] 转化过后的问题下一个射死 \(i\) 的概率为 \[ P=\dfrac{T}{W}P+\dfrac{w_i}{W} \\ \dfrac{W-T}{W…
题目:https://loj.ac/problem/2541 看了题解才会……有三点很巧妙. 1.分母如果变动,就很不好.所以考虑把操作改成 “已经选过的人仍然按 \( w_i \) 的概率被选,但是再次选中一个已经选过的人算作没有操作” . 2.然后要容斥,考虑强制点集 S 的人在 1 号点之后被选.其余随意,那么 \( ans=\sum\limits_{S} (-1)^{|S|} \sum\limits_{i=0}^{\infty} (1-\frac{w_1 + w_S}{A})^i \fr…
题解 一道神仙的题>< 我们毙掉一个人后总的w的和会减少,怎么看怎么像指数算法 然而,我们可以容斥-- 设\(\sum_{i = 1}^{n} w_{i} = Sum\) 我们把问题转化一下,就是一个猎人死掉之后,并不认为他死掉了,他还活着,只是毙掉他的时候,再毙一次 很容易发现这是个正无穷的递归--但是--这是对的! 例如下一个毙掉\(i\)的概率,死掉的人的w和是\(B\),则 \(P = \frac{B}{A}P + \frac{w_{i}}{A}\) 我们当成一元一次方程解,很容易发现…
传送门 思路太清奇了-- 考虑容斥,即枚举至少有哪几个是在\(1\)号之后被杀的.设\(A=\sum_{i=1}^nw_i\),\(S\)为那几个在\(1\)号之后被杀的人的\(w\)之和.关于杀了人之后分母的变化,我们可以假设这个人被杀之后还活着(说好的人被杀就会死呢),不过如果选到了它要再选一次,这个和之前的是等价的.于是这几个人在\(1\)之后被杀的概率为\[P=\sum_{i=0}^\infty (1-\frac{S+w_1}{A})^i\frac{w_1}{A}\] \[P=\frac…
loj description 有\(n\)个猎人,每个猎人有一个仇恨度\(w_i\),每个猎人死后会开一枪打死一个还活着的猎人,打中每个猎人的概率与他的仇恨度成正比. 现在你开了第一枪,打死每个猎人的概率同样也和它的仇恨度成正比.现在第一个猎人想知道他最后一个死的概率. \(w_i>0,\sum w_i\le10^5\),模\(998244353\) sol 容斥,考虑强制某个集合内的猎人在一号猎人之后被打死,剩下的猎人无所谓. 设这个集合内的猎人的仇恨度之和是\(W\),所有猎人的仇恨度之和…
题目链接 LOJ:https://loj.ac/problem/2541 Solution 很巧妙的思路. 注意到运行的过程中概率的分母在不停的变化,这样会让我们很不好算,我们考虑这样转化:假设所有人都活着,然后随机选一个人,如果此人已死那就重新选一次. 假设当前活着的人集合为\(T\),那么射中第\(i\)个人的概率就是: \[ \sum_{i=0}^{\infty}\left(\frac{s_{all}-s_T}{s_{all}}\right)^i\frac{w_i}{s_{all}}=\f…
传送门 首先,每一次有一个猎人死亡之后\(\sum w\)会变化,计算起来很麻烦,所以考虑在某一个猎人死亡之后给其打上标记,仍然计算他的\(w\),只是如果打中了一个打上了标记的人就重新选择.这样对应于每一个人的概率仍然是一样的,而\(\sum w\)在计算的过程中不会变. 因为要求最后死的概率,似乎不是很好求,考虑容斥.枚举一个集合\(S\),我们强制集合\(S\)中的猎人在\(1\)号猎人死亡之后死亡.设集合\(S\)中所有猎人的\(w\)之和为\(A\),所有猎人的\(w\)之和为\(su…
考虑容斥,枚举一个子集S在1号猎人之后死.显然这个概率是w1/(Σwi+w1) (i∈S).于是我们统计出各种子集和的系数即可,造出一堆形如(-xwi+1)的生成函数,分治NTT卷起来就可以了. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespa…
题解 题目中的选择条件等价于正常选择所有猎人,而如果选到已经出局的猎人就继续选: 这两种选法是一样的因为(设$W=\sum_{i=1}^{n}w_{i}$ , $X$为已经出局的猎人的$w$之和): $P_{i} = \sum_{i=0}^{ \infty } {(\frac{X}{W})}^i \frac{w_{i}}{W}$ $= \frac{w_{i}}{W} \sum_{i=0}^{ \infty } {(\frac{X}{W})}^i$ $ = \frac{w_{i}}{W} \fra…
题目链接 loj2541 题解 思路很妙啊, 人傻想不到啊 觉得十分难求,考虑容斥 由于\(1\)号可能不是最后一个被杀的,我们容斥一下\(1\)号之后至少有几个没被杀 我们令\(A = \sum\limits_{i = 1}^{n} w_i\),令\(S\)表示选出那几个在\(i\)之后的\(w_i\)和 我们淘汰人之后概率的分母就改变了,很不好求 我们考虑转化一下问题,每个人被杀后依旧存在,只不过再次选中他时再选一次,是等价的 那么此时那几个人在\(1\)之后的概率 \[ \begin{al…
题解 感觉是一道神题,想不出来 问最后\(1\)号猎人存活的概率 发现根本没法记录状态 每次转移的分母也都不一样 可以考虑这样一件事情: 如果一个人被打中了 那么不急于从所有人中将ta删除,而是给ta打上一个标记,然后继续保留 下一回合如果打中的是一个已经死掉的就继续打 直到打到一个活的为止 可以发现这玩意儿可以是一个无限的东西 那么什么东西是收敛的可以求无线项的值? 等比数列! 那么我们就可以将分母确定下来了 考虑一个容斥: 枚举一个集合\(S\)表示的是至少有这\(i\)个人在1号猎人被打死…
题目描述 题目分析 设\(W=\sum\limits_{i=1}^nw_i\),\(A=\sum\limits_{i=1}^nw_i[i\ is\ alive]\),\(P_i\)为下一个打中\(i\)的概率. 如果开枪打中了已经死亡的猎人,我们可以视作再开一枪,这样就不会产生影响,因此有 \[ \begin{split} P_i&=\frac{W-A}{W}P_i+\frac{w_i}W\\ 移项得\ P_i&=\frac{w_i}{A} \end{split} \] 考虑容斥,枚举\(…
正题 题目链接:https://www.luogu.com.cn/problem/P5644 题目大意 \(n\)个人,每个人被选中的权重是\(a_i\).每次按照权重选择一个没有死掉的人杀死,求第\(1\)个人最后死的概率.输出答案对\(998244353\)取模. \(w_i>0,\sum_{i=1}^nw_i\leq 10^5\) 解题思路 这个死掉之后概率的分母会变所以挺麻烦的,考虑一下变成每次随便选择一个人,如果没有死就杀掉,这样每个人被选择的概率就不变了. 然后考虑到计算恰好最后一个…
题面传送门 很久之前(2020 年)就听说过这题了,这么经典的题怎么能只听说而亲自做一遍呢 首先注意到每次开枪打死一个猎人之后,打死其他猎人概率的分母就会发生变化,这将使我们维护起来非常棘手,因此我们考虑做一个转化:每次随便从全集中选出一个猎人(不管死的活的),如果它是活的就将它射死.假设现在死了的猎人的 \(w_i\) 值之和为 \(T\),所有猎人的 \(w_i\) 值之和为 \(U\),那么精通无穷级数的同学应该不难推出,对于某个还活着的猎人 \(j\),射到的第一个活着的猎人是 \(j\…
https://blog.csdn.net/Maxwei_wzj/article/details/80714129 n个二项式相乘可以用分治+FFT的方法,使用空间回收可以只开log个数组. #include<cstdio> #include<algorithm> #define rep(i,l,r) for (int i=(l); i<=(r); i++) using namespace std; ,mod=; ],tmp[][N]; int ksm(int a,int b…
好题== 先转化一下,每个人被杀死后给他打标记,以后随机杀人时选到有标记的人就继续随机,这样并不会改变每个人被杀死的概率 直接算很难算,考虑容斥,我们枚举$S$表示在$1$死后才死的人至少在集合$S$中,并设$A=\sum\limits_{i=2}^nw_i$,那么它对答案的贡献为$(-1)^{|S|}\sum\limits_{i\geq0}\left(1-\frac{w_1+\sum\limits_{x\in S}w_x}A\right)^i\frac{w_1}A=(-1)^{|S|}\fra…
点此看题面 大致题意: 有\(n\)个人相互开枪,每个人有一个仇恨度\(a_i\),每个人死后会开枪再打死另一个还活着的人,且第一枪由你打响.设当前剩余人仇恨度总和为\(k\),则每个人被打中的概率为\(\frac {a_i}k\).求第\(1\)个人最后被打死的概率. 一个重要性质 对于这题,首先我们可以发现,由于一个人死后,其他人被打中概率的分母会受到影响,产生了后效性,似乎很不可维护. 因此我们需要知道一个重要性质:设\(tot=\sum_{i=1}^na_i\),则题意可以转化为,每个人…
传送门 思路 好一个神仙题qwq 首先,发现由于一个人死之后分母会变,非常麻烦,考虑用某种方法定住分母. 我们稍微改一改游戏规则:一个人被打死时只打个标记,并不移走,也就是说可以被打多次但只算一次.容易发现这并不影响最终结果. 然而光想到这个好像没什么用? 再考虑容斥:枚举哪些人在1之后被打死,其他随意.设在1后面的人的权值为\(S\),总权值为\(sum\),那么概率就是 \[ \begin{align*} &\sum_{i=0}^{\infty} (1-\frac{w_1+S}{sum})^…
Problem loj2541 题意概要:给定 \(n\) 个人的倒霉度 \(\{w_i\}\),每回合会有一个人死亡,每个人这回合死亡的概率为 自己的倒霉度/目前所有存活玩家的倒霉度之和,求第 \(1\) 个人最后一个死亡的概率 Solution 设 \(B = \sum_{i=2}^nw_i\) 要求 \(1\) 号最后一个被选中有点不好做,但是求 \(1\) 号第一个被选中还是比较好做的(\(\frac {w_1}{\sum_{i=1}^nw_i}\)) 至于这两者怎么联系起来,使用 \(…
Preface 菜鸡HL终于狗来了他的省选停课,这次的时间很长,暂定停到一试结束,不过有机会二试的话还是可以搞到4月了 这段时间的学习就变得量大而且杂了,一般以刷薄弱的知识点和补一些新的奇怪技巧为主. 偶尔也会打一些比赛找找手感(比如HHHOJ的比赛,Luogu比赛,以及comet OJ上之前的CCPC题) CF和CC看情况,主要是我真的不太喜欢读英文题的恐怖感觉233 希望这段时间的努力可以让我不跪省选吧 2-26 早上晨跑完了就和杨浩讲了停课的事,不出意外地很轻松就通过了. 然后回班拿了点东…
*注意:题面请移步至loj查看. 从这里开始 Problem A 随机算法 Problem B 猎人杀 Problem C 随机游走 怎么PKU和THU都编了一些假算法,然后求正确率[汗]. 之前听说PKUWC 2017考了五道dp,看来是真的.[完蛋.jpg] 这三道题,2道概率,1道期望,和佬题组成一样... (我只是把PKUWC 2017在loj后3题做了,是不是全是Day 2就不知道了) Problem A 随机算法 题目大意 给定一个图.随机一个排列$p_{1}p_2p_3\cdots…
总结: D1T1T2的思路较为好想,D1T3考试时估计是战略放弃的对象,D2T1思路容易卡在优化状态上(虽然明显3n的状态中有很多无用状态,从而想到子集最优,选择子集最优容易发现反例,从而考虑连带周边一起考虑,去年考场上想出来的,今年却想不出来***)但50十分容易,D2T2的式子超出目前水平(多项式的式子推法需要继续加强),D2T3在学过MinMax容斥以及树上高斯消元(好像还需要FWT)后较为简单,目前水平在250-380中来回飘荡,感觉pkuwc2019要完. loj#2537. 「PKU…
本篇博客已停更 本篇博客已停更 本篇博客已停更 吐槽区: 2020.04.15: 从今天起我做过的题目都记录一下,想不想写题解就另说了 2020.04.17: 写了两天之后真实的发现这是博主的摸鱼日记... 2020.04.22: 从清单中移除了 loj#6612,魔鬼树分块是不可能写的,这辈子都不可能写的 2020.04.22: 上了一下 bzoj 突然发现(通过抄代码和膜题解)过的题马上 500 道了,看了一下发现神 \(hjk\) 各大 OJ 过题量都是我的两倍,自闭了... 2020.0…
UOJ #390. [UNR #3]百鸽笼 题目链接 看这道题之前先看一道相似的题目 [PKUWC2018]猎人杀. 考虑类似的容斥: 我们不妨设处理\(1\)的概率. 我们令集合\(T\)中的所有鸽笼都在\(1\)变空之前不为空的,其它的鸽笼随便.要做到这一点,我们只需要令每个\(T\)集合中的鸽笼容量\(--\)就行了.然后我们用背包背出所有序列的方案数(不包括\(1\)),然后在将\(1\)插入序列中.插入时,将\(w_i-1\)个随便插入,然后再将一个放在序列末尾. 具体实现时,我们可以…
Day –INF: 联赛后根据分数一部分人继续停课.由于本蒟蒻撞上了狗屎运,联赛分数还行,可参加NOIWC和PKUWC,故继续停课训练.期间补全了一堆知识点,并成功翘掉期末考.(然而该还的还是要还的,春节要恶补文化课了) 我们学校今年参加thuwc的人数为7人,pkuwc的人数为3人,随行的还有10位家长和2位教练,人数史上最多. 作为一个从未在冬天去过“北方”的人,考虑到长沙的气温将远低过广州,特意去买了两件羽绒服.我妈甚至想给我买一双防水的运动鞋因为没有找到合适的故没买,个人觉得没必要. P…