我想大声告诉你
来源:互联网 发布:h5大番薯棋牌源码 编辑:程序博客网 时间:2024/04/28 19:58
题意
求每一个
注意在这题中,所有数值的运算在模
数据组数
分析
首先有一个要点(坑),题目没讲清楚,就是答案所求概率是只算每一轮开始被选中出局的概率,遭受攻击后出局的概率对答案是没贡献的…(考试时我的
然后,正解有一个更重要的要点。每个人都是一样的,先不考虑被攻击出局,我们将他们按照出局顺序(只算每轮开始被选中出局)编号
我们可以设
第
所以转移:
初始状态
最后受到
这样预处理下逆元和那几个关于
时间复杂度
代码
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int Mo = 258280327,MAXN = 2005;int Time[MAXN],G[MAXN][MAXN],N,P;int Pow(int a,int b){ if (!b) return 1; long long mid = Pow(a,b >> 1); if (b & 1) return mid * mid % Mo * a % Mo; return mid * mid % Mo;}int Rev(int t){ return Pow(t,Mo - 2);}void Work(){ int X,Y; memset(G,0,sizeof G); scanf("%d%d%d", &N, &X, &Y); P = X * 1ll * Rev(Y) % Mo; Time[0] = 1; for(int i = 1;i <= N;i ++) Time[i] = Time[i - 1] * 1ll * (1 - P + Mo) % Mo; G[0][0] = 1; for(int i = 1;i <= N;i ++) for(int j = 1;j <= i;j ++) G[i][j] = ((1 - Time[j] + Mo) % Mo * 1ll * G[i - 1][j] % Mo + G[i - 1][j - 1] * 1ll * Time[j - 1] % Mo) % Mo; for(int k = 0;k < N;k ++) { int ans = 0; for(int i = 0;i < N;i ++) ans = (ans + G[i][k] * 1ll * Time[k] % Mo) % Mo; printf("%d%c", ans * 1ll * Rev(N) % Mo, (k == N - 1) ? '\n' : ' '); }}int main(){ int T; scanf("%d", &T); for(;T;T --) Work(); return 0;}
- 我想大声告诉你
- 我想大声告诉你
- 我想大声告诉你
- 我想大声告诉你
- 【JZOJ】4212 我想大声告诉你
- 我想大声对你说--USB
- <我想告诉你姑娘>
- 我想告诉你 ……
- 一定要大声的告诉她
- 如果你打算开始创业,我想告诉你的是
- 我想告诉你的一些有关质量问题的答案
- 大声的告诉全世界:“我要崛起”
- 如果你打算开始创业,我想告诉你的是…
- 我想你。
- 我想你
- 我想你.
- 我想你
- 我想你
- LATEX两个表格并排放,各自有独立的标题和编号
- oracle 由易到难源代码一
- 嵌入式程序员的面试经历
- /etc/rc.d/init.d和/etc/init.d 联系区别
- Linux的SHELL学习指南
- 我想大声告诉你
- Linux下解析配置文件和GKeyFile读取配置文件
- Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version
- easyUI的行内编辑editor
- SSH Tunnel扫盲(ssh port forwarding端口转发)
- Java_jdbc 基础笔记之七 数据库连接(方法升级)
- Spring 开启Annotation <context:annotation-config> 和 <context:component-scan>诠释及区别
- 网易linux笔试题
- Android开发:计算缓存大小并且清空缓存