雨好大啊
A. 我想大声告诉你
题意:一共有n个人,规定出局概率为p=x/y。每轮随机选一个人出局,此人出局后其他人有p的概率出局。求遭受k次攻击后出局概率
解法:显然,ansi=每人受到i次攻击没出局的方案数和/n,因为每个人在不被其他人选中出局下,被随机出局的概率=sum/n,表示为
所以我们要解表示第i个人经历了j次攻击不出局的方案数
如果第i-1个人出局,则他会对当前点产生的不出局方案数
如果第i-1个人不出局,则他会对当前点产生的方案数,其中概率=不出局的概率=1-出局概率
每次有p的概率出局,那么有的概率在第j局不出局
B. KC的瓷器
题意:有m次选择机会,每次在矩阵中只能选取最左端或者最右端的一段值,求最大贡献
解法:预处理最右端,最左端的连续和,那么设表示第i排有j的空间的最大值,那么有
,设
表示前i个点有j的空间的最大贡献,那么
,其中
,表示给这一横行的分配空间
C. 旅游
题意:给出一个图和q问,求图上边权小于当前要求的点对的数量
解法:显然可以离线。
考虑如果两个连通块被接到一起后,他们对答案的贡献为,因为点对可逆,所以要乘以2。
将边与问题都排一遍序,那么这个数量级将少一个n,当前问题不能被加的边有可能在下一个问题被加,但是不会被前一个问题加。复杂度
核心代码:
for(int i=1;i<=Q&&j<=m;i++){
while(a[j].val<=q[i].x&&j<=m){
uni(a[j].x,a[j].y);
j++;
}
f[q[i].id]=ans;
}
for(int i=1;i<=Q;i++) cout<<f[i]<<endl;