这个还挺友好的,自己相对轻松能想出来~
令 $f[i]$ 表示起点到点 $i$ 的期望次数,则 $ans[i]=f[i]\times \frac{p}{q}$

#include <cmath>
#include <cstdio>
#include <algorithm>
#define N 305
#define setIO(s) freopen(s".in","r",stdin) , freopen(s".out","w",stdout)
using namespace std;
int edges;
double f[N][N];
int deg[N],hd[N],to[N*N],nex[N*N];
void add(int u,int v)
{
nex[++edges]=hd[u],hd[u]=edges,to[edges]=v;
}
void Gauss(int n)
{
int i,j,k,now;
for(i=1;i<=n;++i)
{
now=i;
for(j=i;j<=n;++j)
{
if(fabs(f[j][i])>fabs(f[now][i])) now=j;
}
if(now!=i)
{
for(j=1;j<=n;++j) swap(f[i][j],f[now][j]);
}
if(f[i][i])
{
for(j=i+1;j<=n+1;++j) f[i][j]/=f[i][i];
f[i][i]=1;
}
for(j=i+1;j<=n;++j)
{
double div=f[j][i];
for(k=i+1;k<=n+1;++k) f[j][k]-=div*f[i][k];
f[j][i]=0;
}
}
for(i=n;i>=1;--i)
{
for(j=i+1;j<=n;++j)
{
f[i][n+1]-=f[j][n+1]*f[i][j];
}
}
}
int main()
{
// setIO("input");
int n,m,p,q,i,j;
double in,out;
scanf("%d%d%d%d",&n,&m,&p,&q);
in=1.0*(double)(1.0*p/q),out=1.0-in;
for(i=1;i<=m;++i)
{
int a,b;
scanf("%d%d",&a,&b),add(a,b),add(b,a),++deg[a],++deg[b];
}
f[1][n+1]=1;
for(i=1;i<=n;++i)
{
f[i][i]=1;
for(j=hd[i];j;j=nex[j])
{
int v=to[j];
f[i][v]=-((1.0/deg[v])*out);
}
}
Gauss(n);
for(i=1;i<=n;++i)
{
printf("%.9f\n",f[i][n+1]*in);
}
return 0;
}

  

BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡 概率与期望+高斯消元的更多相关文章

  1. BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡 [高斯消元 概率DP]

    1778: [Usaco2010 Hol]Dotp 驱逐猪猡 题意:一个炸弹从1出发p/q的概率爆炸,否则等概率走向相邻的点.求在每个点爆炸的概率 高斯消元求不爆炸到达每个点的概率,然后在一个点爆炸就 ...

  2. BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡

    1778: [Usaco2010 Hol]Dotp 驱逐猪猡 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 563  Solved: 216[Submi ...

  3. BZOJ 1778 [Usaco2010 Hol]Dotp 驱逐猪猡 ——期望DP

    思路和BZOJ 博物馆很像. 同样是高斯消元 #include <map> #include <ctime> #include <cmath> #include & ...

  4. BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡 (高斯消元)

    题面 题目传送门 分析 令爆炸概率为PPP.设 f(i)=∑k=0∞pk(i)\large f(i)=\sum_{k=0}^{\infty}p_k(i)f(i)=∑k=0∞​pk​(i),pk(i)p ...

  5. bzoj 1778 [Usaco2010 Hol]Dotp 驱逐猪猡(高斯消元)

    [题意] 炸弹从1开始运动,每次有P/Q的概率爆炸,否则等概率沿边移动,问在每个城市爆炸的概率. [思路] 设M表示移动一次后i->j的概率.Mk为移动k次后的概率,则有: Mk=M^k 设S= ...

  6. bzoj 1778: [Usaco2010 Hol]Dotp 驱逐猪猡【dp+高斯消元】

    算是比较经典的高斯消元应用了 设f[i]为i点答案,那么dp转移为f[u]=Σf[v]*(1-p/q)/d[v],意思是在u点爆炸可以从与u相连的v点转移过来 然后因为所有f都是未知数,高斯消元即可( ...

  7. BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡(高斯消元+期望dp)

    传送门 解题思路 设\(f(x)\)表示到\(x\)这个点的期望次数,那么转移方程为\(f(x)=\sum\frac{f(u)*(1 - \frac{p}{q})}{deg(u)}\),其中\(u\) ...

  8. 【BZOJ】1778: [Usaco2010 Hol]Dotp 驱逐猪猡

    [题意]给定无向图,炸弹开始在1,在每个点爆炸概率Q=p/q,不爆炸则等概率往邻点走,求在每个点爆炸的概率.n<=300. [算法]概率+高斯消元 [题解]很直接的会考虑假设每个点爆炸的概率,无 ...

  9. BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元

    BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元 题意: 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 3 ...

随机推荐

  1. Luogu P2495 [SDOI2011]消耗战

    题目 我们可以很快的想到一个单次\(O(n)\)的dp. 然后我们注意到这个dp有很多无用的操作,比如一条没有关键点的链可以直接去掉. 所以我们可以尝试一次dp中只管那些有用的点. 题目给的关键点显然 ...

  2. PHP会话(Session)实现用户登陆功能

    对比起 Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,本文简单介绍 Session 的使用. 由于 Session 是以文本文件形式存储在 ...

  3. PHP+jQuery.photoClip.js支持手势的图片裁剪上传实例

    PHP+jQuery.photoClip.js支持手势的图片裁剪上传实例,在手机上双指捏合为缩放,双指旋转可根据旋转方向每次旋转90度,在电脑上鼠标滚轮为缩放,双击则顺时针旋转90度. 下面让我们来看 ...

  4. php学习历程1——注册、登录(面向过程、面向对象)

    首先放一张天空之城 Php入门来的第一个小项目,首先做的是一个简陋的文章管理系统.有登录.注册.文章list.添加文章.修改文章.删除文章.分页这几个小功能. 面向过程的编码 面向对象的编码 首先做的 ...

  5. Feign的雪崩处理

    在声明式远程服务调用Feign中,实现服务灾难性雪崩效应处理也是通过Hystrix实现的.而feign启动器spring-cloud-starter-feign中是包含Hystrix相关依赖的.如果只 ...

  6. CSP2019螺旋升天爆炸记

    Day -N 半年没碰OI的我终于又回到了这个熟悉又陌生的地方.然后颓废了两天就过了初赛? 初赛rp爆棚考了全校第一,然并卵 然后就是打了遍树状数组模板,写挂了(没错我现在连树状数组都会写挂) 看一眼 ...

  7. C#键盘事件

    一: protected override void OnKeyDown(KeyEventArgs e) { if (e.Key==Key.Enter) { sendAppToServer(); } ...

  8. linux mysql-5.7.26 安装全记录

    买了个阿里云,自己折腾一下. 时间:2019年7月17日13:40:18 1.下载 wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7. ...

  9. js之数据类型(对象类型——构造器对象——数组1)

    数组是值的有序集合,每个值叫做一个元素,而每一个元素在数组中有一个位置,以数字表示,称为索引.JavaScript数组是无类型的,数组元素可以是任意类型且同一个数组中不同元素也可能有不同的类型.数组的 ...

  10. zookeeper配置文件说明

    zoo.cfg #zoo.cfg 的内容 # 心跳检查的时间 2秒 tickTime=2000 # 初始化时 连接到服务器端的间隔次数,总时间10*2=20秒 initLimit=10 # ZK Le ...