题目

设\(f_i\)表示经过\(i\)的期望次数。那么显然答案\(ans_j=\sum\limits_{i=1}^nf_iP_{i,j}\)。

我们可以轻松地列出转移式子:

\[f_1=\sum\limits_{j=1}^nf_jP_{j,1}+1
\]

\[f_i=\sum\limits_{j=1}^nf_jP_{j,i}
\]

高消即可。

#include<bits/stdc++.h>
using namespace std;
const int N=1007,P=1000000007;
int p[N][N],a[N][N];
int inc(int a,int b){a+=b;return a>=P? a-P:a;}
int mns(int a,int b){a-=b;return a<0? a+P:a;}
int mul(int a,int b){return 1ll*a*b%P;}
int inv(int a){int r=1,k=P-2;for(;k;k>>=1,a=mul(a,a))if(k&1)r=mul(a,r);return r;}
int read(){int x;cin>>x;return x;}
int main()
{
freopen("1.in","r",stdin);
int n,m,i,j,k,x,ans,Inv=inv(10000);
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(a,0,sizeof a);
for(i=1;i<=n;++i) for(j=1;j<=n+m;++j) p[i][j]=mul(read(),Inv);
for(i=1;i<=n;++i)
{
for(j=1;j<=n;++j) a[i][j]=i==j? mns(p[j][i],1):p[j][i];
a[i][n+1]=i==1? P-1:0;
}
for(i=1;i<=n;++i) for(j=1;j<=n;++j) if(i^j) for(x=mul(a[j][i],inv(a[i][i])),k=1;k<=n+1;++k) a[j][k]=mns(a[j][k],mul(a[i][k],x));
for(i=1;i<=n;++i) a[i][n+1]=mul(a[i][n+1],inv(a[i][i]));
for(i=n+1;i<=n+m;++i)
{
for(ans=0,j=1;j<=n;++j) ans=inc(ans,mul(p[j][i],a[j][n+1]));
printf("%d ",ans);
}
puts("");
}
}

HNCPC2019H 有向图的更多相关文章

  1. 关于有向图走“无限次”后求概率/期望的口胡/【题解】HNCPC2019H 有向图

    关于有向图走"无限次"后求概率/期望的口胡/[题解]HNCPC2019H 有向图 全是口胡 假了不管 讨论的都是图\(G=(V,E),|V|=n,|E|=m\)上的情况 " ...

  2. Kosaraju 算法检测有向图的强连通性

    给定一个有向图 G = (V, E) ,对于任意一对顶点 u 和 v,有 u --> v 和 v --> u,亦即,顶点 u 和 v 是互相可达的,则说明该图 G 是强连通的(Strong ...

  3. POJ 2337 Catenyms(有向图的欧拉通路)

    题意:给n个字符串(3<=n<=1000),当字符串str[i]的尾字符与str[j]的首字符一样时,可用dot连接.判断用所有字符串一次且仅一次,连接成一串.若可以,输出答案的最小字典序 ...

  4. code forces 383 Arpa's loud Owf and Mehrdad's evil plan(有向图最小环)

    Arpa's loud Owf and Mehrdad's evil plan time limit per test 1 second memory limit per test 256 megab ...

  5. 有向图强连通分量的Tarjan算法

    有向图强连通分量的Tarjan算法 [有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G ...

  6. hdu1269迷宫城堡(判断有向图是否是一个强连通图)

    1 /* 题意: 给你一个图,求这个有向图示否是一个强连通图(每两个节点都是可以相互到达的)! 思路1:按正向边dfs一遍,将经过的节点计数,如果记录的节点的个数小于n,那么就说明图按照正向边就不是连 ...

  7. poj 1386 Play on Words(有向图欧拉回路)

    /* 题意:单词拼接,前一个单词的末尾字母和后一个单词的开头字母相同 思路:将一个单词的开头和末尾单词分别做两个点并建一条有向边!然后判断是否存在欧拉回路或者欧拉路 再次强调有向图欧拉路或欧拉回路的判 ...

  8. NYOJ 99单词拼接(有向图的欧拉(回)路)

    /* NYOJ 99单词拼接: 思路:欧拉回路或者欧拉路的搜索! 注意:是有向图的!不要当成无向图,否则在在搜索之前的判断中因为判断有无导致不必要的搜索,以致TLE! 有向图的欧拉路:abs(In[i ...

  9. 邻接表有向图(三)之 Java详解

    前面分别介绍了邻接表有向图的C和C++实现,本文通过Java实现邻接表有向图. 目录 1. 邻接表有向图的介绍 2. 邻接表有向图的代码说明 3. 邻接表有向图的完整源码 转载请注明出处:http:/ ...

随机推荐

  1. shell练习--PAT试题1009:说反话 (20 分)

    给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串.字符串由若干单词和若干空格组成,其中单词是由英文字母(大小 ...

  2. R 去掉非零元素

    X <- X[X!=] Malign_score <- Malign_score[Malign_score>=0.0008]

  3. opengl中相关的计算机图形变换矩阵之:模型视图几何变换

    3. 二维变换矩阵 x'      a11 a12 a13    x         a11x a12y a13z y' =  a21 a22 a23     y    =  a21x a22y a2 ...

  4. React曾经忽略的知识点(上)

    1.JSX 防注入攻击 你可以放心地在 JSX 当中使用用户输入 const title = response.potentiallyMaliciousInput; // 直接使用是安全的: cons ...

  5. for循环,foreach, map,reduce用法对比+for in,for of

    for不做赘述,相当简单: foreach方法: forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数. 注意: forEach() 对于空数组是不会执行回调函数的. array.f ...

  6. php 错误提示开启

    开发环境项目,通常需要错误提示:php.ini文件,设置 display_errors = On 项目上线以后,当然不想把错误提示显示. 一般不直接修改php.ini文件,下面两行代码直接加入报错ph ...

  7. multiple users to one ec2 instance setup

    http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/managing-users.html usually when use pem file as ...

  8. linux 简单命令说明

    1.df -h 查看磁盘占用及挂载情况 挂载磁盘 如下: mount /dev/sda1 /boot 取消挂载的磁盘 umount /boot 2.dh -sh 查看当前目录占用文件大小 dh -sh ...

  9. 2018-2019-2 20165235《网络对抗技术》Exp8 Web基础

    2018-2019-2 20165235<网络对抗技术>Exp8 Web基础 实践过程记录: (1).Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与 ...

  10. ActiveMQ从入门到精通(二)

    接上一篇<ActiveMQ从入门到精通(一)>,本篇主要讨论的话题是:消息的顺序消费.JMS Selectors.消息的同步/异步接受方式.Message.P2P/PubSub.持久化订阅 ...