n<=2000个人参加比赛,这样比:(这里的序号没按题目的)1、两两比一场,比完连个图,边i->j表示i赢了j。2、连完那个图强联通分量缩起来,强连通分量内继续比,即强连通分量递归进行1、2,直到每个强连通分量大小为1.i<j时i有a/b的概率赢j,问每个人比赛的场数的总和的期望,答案%998244353。

n个人搞完一次会有大大小小的联通块,就可以递归下去了!但是每次可能分出很多种情况,怎么算呢?选他的一个每种图一定有的强连通分量来枚举即可,那就枚举拓扑序最后的那一个分量,也就是输给了除分量外所有人的那些人组成的,吧!$Ans_i$--i个人答案,$Ans_i=\sum_{j=1}^{i}str_j*cp_{i,j}*(\frac{j(j-1)}{2}+j(i-j)+Ans_i+Ans_{s-i})$,其中$str_i$表示i个点成强连通分量的概率,$cp_{i,j}$表示i个点中j个点输给其他所有人这件事发生的概率。注意到$Ans_i$在$j=i$时会转移到自己,移个项除个系数即可,略。而$str_i=1-\sum_{j=1}^{i-1}str_j*cp_{i,j}$,$cp_{i,j}=cp_{i-1,j-1}p^{i-j}+cp_{i-1,j}(1-p)^j,cp_{i,0}=1$。

 #include<string.h>
#include<stdlib.h>
#include<stdio.h>
//#include<assert.h>
#include<algorithm>
//#include<iostream>
using namespace std; int n,a,b,p;
#define maxn 2011
const int mod=;
int cp[maxn][maxn],str[maxn],ans[maxn]; int powmod(int a,int b)
{
int ans=;
while (b)
{
if (b&) ans=1ll*ans*a%mod;
a=1ll*a*a%mod;
b>>=;
}
return ans;
} int list1p[maxn],listp[maxn];
int main()
{
scanf("%d%d%d",&n,&a,&b); p=1ll*a*powmod(b,mod-)%mod;
cp[][]=;
list1p[]=; for (int i=;i<=n;i++) list1p[i]=list1p[i-]*1ll*(mod+-p)%mod;
listp[]=; for (int i=;i<=n;i++) listp[i]=listp[i-]*1ll*p%mod;
for (int i=;i<=n;i++)
{
cp[i][]=;
for (int j=;j<=i;j++) cp[i][j]=list1p[j]*1ll*cp[i-][j]%mod+listp[i-j]*1ll*cp[i-][j-]%mod,
cp[i][j]-=cp[i][j]>=mod?mod:;
}
str[]=;
for (int i=;i<=n;i++)
{
str[i]=;
for (int j=;j<i;j++) str[i]-=str[j]*1ll*cp[i][j]%mod,str[i]+=str[i]<?mod:;
}
ans[]=ans[]=;
for (int i=;i<=n;i++)
{
ans[i]=(str[i]*1ll*cp[i][i]%mod)*i*(i-)%mod*((mod+)>>)%mod;
for (int j=;j<i;j++) ans[i]+=str[j]*1ll*cp[i][j]%mod*(1ll*j*(j-)%mod*((mod+)>>)%mod
+1ll*j*(i-j)%mod+ans[j]+ans[i-j])%mod,ans[i]-=ans[i]>=mod?mod:;
ans[i]=1ll*ans[i]*powmod(mod+-str[i]*1ll*cp[i][i],mod-)%mod;
}
printf("%d\n",ans[n]);
return ;
}

Codeforces913F. Strongly Connected Tournament的更多相关文章

  1. 【CF913F】Strongly Connected Tournament 概率神题

    [CF913F]Strongly Connected Tournament 题意:有n个人进行如下锦标赛: 1.所有人都和所有其他的人进行一场比赛,其中标号为i的人打赢标号为j的人(i<j)的概 ...

  2. 【CodeForces】913 F. Strongly Connected Tournament 概率和期望DP

    [题目]F. Strongly Connected Tournament [题意]给定n个点(游戏者),每轮游戏进行下列操作: 1.每对游戏者i和j(i<j)进行一场游戏,有p的概率i赢j(反之 ...

  3. @codeforces - 913F@ Strongly Connected Tournament

    目录 @description@ @solution@ @accepted code@ @details@ @description@ n 个选手参加了一场竞赛,这场竞赛的规则如下: 1.一开始,所有 ...

  4. Strongly Connected Tournament

    题解: 有一个很重要的性质就是 对于一张完全强联通图来说 一定有一个强联通分量入度为0(或者出度为0) 然后就一些计数题的基本套路 https://www.cnblogs.com/onioncyc/p ...

  5. PTA Strongly Connected Components

    Write a program to find the strongly connected components in a digraph. Format of functions: void St ...

  6. algorithm@ Strongly Connected Component

    Strongly Connected Components A directed graph is strongly connected if there is a path between all ...

  7. cf475B Strongly Connected City

    B. Strongly Connected City time limit per test 2 seconds memory limit per test 256 megabytes input s ...

  8. Strongly connected(hdu4635(强连通分量))

    /* http://acm.hdu.edu.cn/showproblem.php?pid=4635 Strongly connected Time Limit: 2000/1000 MS (Java/ ...

  9. HDU 4635 Strongly connected (Tarjan+一点数学分析)

    Strongly connected Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) ...

随机推荐

  1. P1433 吃奶酪

    题目描述 房间里放着n块奶酪.一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处. 输入输出格式 输入格式: 第一行一个数n (n<=15) 接下来每行2个实数,表示第i块 ...

  2. Vue.js学习笔记--1.基础HTML和JS属性的使用

    整理自官网教程 -- https://cn.vuejs.org/ 1. 在HTML文件底部引入Vue <script src="https://cdn.jsdelivr.net/npm ...

  3. jboss中JVM监控

    1)打开 http://server-name-or-ip/jmx-console/HtmlAdaptor2)在 jboss.system 节点找到 type=ServerInfo ,点击进入3)找到 ...

  4. Apache与IIS端口冲突解决方法

    在安装Apache或者php集成环境包是经常会遇到Apache的80端口被占用导致无法正常启动Apache. Win7可以通过如下方法解决(如果坚持要使用80端口的话): 1.打开"控制面板 ...

  5. 迅为嵌入式4412平台兼容3G/4G模块的安卓开发板

    安卓开发板特点说明: 1. 配备16G固态硬盘EMMC存储 2. 64位双通道2GB内存 三星S5M8767电源管理 板载高精度GPS模块 CAN,RS-485等工业接口 板载WIFI蓝牙模块,陀螺仪 ...

  6. 迅为电子iTOP-HMI043 4.3寸人机界面产品

    4.3寸人机界面: 7寸人机界面: 10.2寸人机界面: 产品认证CE:符合EN61000-6-2:2005, EN61000-6-4:2007标准FCC 兼容性:符合FCC Class A面板防护等 ...

  7. js 动态添加表单 table tr

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. crontab 每月最后一天执行命令

    没有什么是解决不了的事情,如果有,只是我们的知识不够精通,学得不扎实 需求:有一个程序,需要在每个月的最后一天执行 例如:每个月的最后一天早上8:00 打印 dede 到  /tmp/test.txt ...

  9. Fragment Transactions和Activity状态丢失

    本文由 伯乐在线 - 独孤昊天 翻译.未经许可,禁止转载!英文出处:androiddesignpatterns.欢迎加入翻译组. 下面的堆栈跟踪和异常代码,自从Honeycomb的初始发行版本就一直使 ...

  10. action类中属性驱动和模型驱动的区别

    1.Struts2的属性驱动 在Action类中,属性××通过get××()和set××()方法,把参数在整个生命周期内进行传递,这就是属性驱动 代码如下: package org.abu.csdn. ...