题目

解析

设 \(f_{i,j}\) 表示 \(i+1..n\) 个人能受到 \(j\) 次攻击的概率

因为选人出局的顺序是无所谓的,所以我们设从 \(1..n\) 依次选人出局

那么转移时需要分类,分类即加

  • 选第 \(i\) 个人出局,那么 \(i+1..n\) 会受到 \(1\) 次攻击。先前攻击了 \(j-1\) 次,\(i\) 必须要活下来。\(f_{i,j} = f_{i-1,j-1} \times (1-p)^{j-1}\)
  • 第 \(i\) 个人是遭受攻击后被杀,那么它必然在前 \(j\) 次攻击的某一次后出局。\(f_{i,j} = f_{i-1,j} \times (1-(1-p)^j)\)

然后考虑答案是什么

对于 \(k\) 次攻击,小 \(R\) 可以是在所有的 \(f_{i,k}\) 后在被选中出局,那么他必然在受到攻击后仍活下来

所以 \(ans_k = \frac{1}{n} \times (1-p)^k \times \sum_{i=0}^n f_{i,k}\)

乘上 \(\frac{1}{n}\) 是因为小 \(R\) 有 \(\frac{1}{n}\) 的概率在这个位置上

\(Code\)

#include<cstdio>
#include<cstring>
#define LL long long
using namespace std; const int N = 2e3 + 5;
const LL P = 258280327;
LL f[N][N] , pow[N]; inline LL fpow(LL x , LL y)
{
if (x == 0 && y == 0) return 0;
x = (x + P) % P;
LL res = 1;
while (y)
{
if (y & 1) res = res * x % P;
y >>= 1 , x = x * x % P;
}
return res;
} int main()
{
int T;
scanf("%d" , &T);
for(; T; T--)
{
int n; LL x , y , p;
scanf("%d%lld%lld" , &n , &x , &y);
p = x * fpow(y , P - 2) % P;
pow[0] = 1;
for(register int i = 1; i <= n; i++) pow[i] = pow[i - 1] * (1 - p + P) % P;
memset(f , 0 , sizeof f);
f[0][0] = 1;
for(register int i = 1; i < n; i++)
{
f[i][0] = f[i - 1][0] * (1 - pow[0] + P) % P;
for(register int j = 1; j < n; j++)
f[i][j] = f[i - 1][j - 1] * pow[j - 1] % P ,
f[i][j] += f[i - 1][j] * (1 - pow[j] + P) % P;
}
for(register int k = 0; k < n; k++)
{
LL ans = 0;
for(register int i = 0; i < n; i++) ans = (ans + f[i][k]) % P;
printf("%lld " , ans * pow[k] % P * fpow(n , P - 2) % P);
}
printf("\n");
}
}

JZOJ 4212. 【五校联考1day2】我想大声告诉你的更多相关文章

  1. 【五校联考1day2】JZOJ2020年8月12日提高组T2 我想大声告诉你

    [五校联考1day2]JZOJ2020年8月12日提高组T2 我想大声告诉你 题目 Description 因为小Y 是知名的白富美,所以自然也有很多的追求者,这一天这些追求者打算进行一次游戏来踢出一 ...

  2. 【五校联考1day2】JZOJ2020年8月12日提高组T1 对你的爱深不见底

    [五校联考1day2]JZOJ2020年8月12日提高组T1 对你的爱深不见底 题目 Description 出乎意料的是,幸运E 的小R 居然赢了那个游戏.现在欣喜万分的小R 想要写一张明信片给小Y ...

  3. 五校联考 running (欧拉函数)

    题面 \(solution:\) 讲真吧,这道题真的出得,嗯,太恐怖了.考场上这道题真的把我看懵了,这道题以前是见过的,但欧拉函数?我学过吗?一道容斥都要超时的题目,我都要为我自己点根香了,拿着gcd ...

  4. 【五校联考3day2】C

    題意: 現有一平面直角坐標系,有n個點,每一個點必須向某一個方向發射射線,且任意一條射線必須與某一條坐標軸平行.定義一種發射射線的方案是合法的,則方案必須滿足: 1.沒有一條射線交叉 2.沒有一條射線 ...

  5. 五校联考R1 Day1T3 平面图planar(递推 矩阵快速幂)

    题目链接 我们可以把棱柱拆成有\(n\)条高的矩形,尝试递推. 在计算的过程中,第\(i\)列(\(i\neq n\))只与\(i-1\)列有关,称\(i-1\)列的上面/下面为左上/左下,第\(i\ ...

  6. 五校联考R1 Day2T2 矩阵matrix(容斥)

    题目链接 容易想到容斥,但是很恶心,因为要对行和列都容斥,然后行+列又要容斥.. 于是得到\(O(nm\log)\)的做法. 就有70分了: #include <cstdio> #incl ...

  7. 五校联考模拟赛Day2T2矩阵(容斥原理)

    题意 $n * m$的网格,对其进行黑白染色,问每一行每一列至少有一个黑格子的方案数. Sol 考场上只会$n^3$的dp,还和指数级枚举一个分qwq 设$f[i][j]$表示到了第$i$行,已经有$ ...

  8. NOIP2016提高A组五校联考4总结

    坑爹的第一题,我居然想了足足3个小时,而且还不确定是否正确. 于是,我就在这种情况下心惊胆跳的打了,好在ac了,否则就爆零了. 第二题,树形dp,本来差点就想到了正解,结果时间不够,没打完. 第三题, ...

  9. 【NOIP2016提高A组五校联考4】square

    题目 分析 首先,设\(f_{i,j}\)表示最大的以(i,j)为左下角的正方形的边长. 转移显然,\(f_{i,j}=\max(f_{i-1,j},f_{i,j-1},f_{i-1,j-1})+1\ ...

  10. 【NOIP2016提高A组五校联考4】label

    题目 题目 20%算法 设\(f_{i,j}\)表示第i个节点选了j这个权值的方案数. 显然转移方程为,\[f_{i,j}=\Pi_{v=son(i)}(\sum_{k=1}^{j-k}f_{v,k} ...

随机推荐

  1. SUPERVISOR监控tomcat配置文件

    Supervisor安装教程参考:https://www.cnblogs.com/brad93/p/16639953.html tomcat安装教程参考:https://www.cnblogs.com ...

  2. log4j漏洞原理

    一.前置知识 1.JNDI接口 JNDI即Java Naming and Directory Interface(JAVA命名和目录接口),它提供一个目录系统,并将服务名称与对象关联起来,从而使得开发 ...

  3. 【面试题总结】JVM01-组成及垃圾回收

    一.概念 1.JVM组成及作用 (1)组成:类加载器.运行时数据区(Java内存模型).执行引擎.本地库接口 (2)作用: 类加载器(ClassLoader)把class文件转换成字节码: 运行时数据 ...

  4. Linux 下的输入输出和重定向示例

    Linux 下的输入输出和重定向示例 作者:Grey 原文地址: 博客园:Linux 下的输入输出和重定向示例 CSDN:Linux 下的输入输出和重定向示例 说明 Linux 下的输入输出有如下三种 ...

  5. LeetCode HOT 100:最大子数组和

    题目:53. 最大子数组和 题目描述: 给你一个整数数组,在该数组的所有子数组中,找到一个子数组中所有元素相加和最大,返回这个最大的和.子数组就是一个数组中,由一个或几个下标连续的元素,组成的小数组, ...

  6. Django(1) - 初识Django框架

    1.前言 该专栏学习笔记环境参数如下: Windows 10 Xampp/Navicat for MySQL Python 3.8+ Django 3.0.* Vue 2.6+ 开发工具: PyCha ...

  7. 【转载】ADOX.Catalog中文帮助详细说明chm文档

    首先给个完全版的地址,如果您机器上装过OFFICE应该可以打开的:ADOX 对象模型, 地址是:"C:\Program Files\Common Files\Microsoft Shared ...

  8. BST查找结构与折半查找方法的实现与实验比较

    简介 作业:查找结构与排序方法 作业题目: BST 查找结构与折半查找方法的实现与实验比较 要求编写程序实现 BST 存储结构的建立(插入).删除.查找和排序算法: 实现折半查找算法:比较 BST 查 ...

  9. 使用 GPG 签名提交

    GPG 签名是对代码提交者进行身份验证的一种补充,即证明代码提交来密钥持有者,理论上可以确保在目前的破译技术水平下无法篡改内容.您可以使用 GPG 工具 (GNU Privacy Guard) 生成密 ...

  10. (5)go-micro微服务domain层开发

    目录 一 domain层介绍说明 二 model层开发 三 repository层开发 四 service层开发 五 最后 一 domain层介绍说明 domain层专注于数据库数据领域开发,我们把数 ...