luogu LINK:驱逐猪猡

bzoj LINK:猪猪快跑

问题是在1时刻有个炸蛋在1号点 这个炸弹有p/q的概率爆炸 如果没有爆炸 那么会有1/di的概率选择一条边跳到另外一个点上重复这个过程。

问炸弹在第i号点上爆炸的概率。

一个比较传统的在图上期望的题目。考虑每一秒都有p/q的概率爆炸 所以当秒数过大的时候我们可以忽略不记概率了。

但是这要求需要求出每一秒炸弹在某个点的概率。

设T矩阵当前时刻炸弹在某个点的概率 显然一开始T={1,0,0,...};

可以发现在第二秒的时候 设W矩阵为由i点到j点转移的概率。

T=T×W.在第二秒的时候 炸弹爆炸的概率s为\(\frac{p}{q}(1-\frac{p}{q})\) 那么此时在各点爆炸的概率为s×T.

综上 将答案矩阵ans写出来 \(ans=\frac{p}{q}\cdot T+\frac{p}{q}\cdot T\cdot W\cdot (1-\frac{p}{q})+\frac{p}{q}\cdot T\cdot W^2\cdot (1-\frac{p}{q})^2+...\)

设 \(W=W\cdot (1-\frac{p}{q})\)

\(ans=\frac{p}{q}\cdot T+\frac{p}{q}\cdot T\cdot W+\frac{p}{q}\cdot T\cdot W^2+...\)

可以发现把公因数提出来 然后广义矩阵等比数列求和。

\(ans=\frac{p}{q}\cdot T\cdot \frac{I-W^{\infty}}{I-W}\)

可以直接将\(W^{\infty}\)给忽略掉 因为显然趋近于0.

\((I-W)\cdot ans=\frac{p}{q}\cdot T\)

I为单位矩阵 W为已知矩阵 T为已知矩阵 差ans.

不难想到高斯消元.

坑点 列矩阵的时候 W得倒着列 因为考虑一下W的列相加为右边的T.并非行相加。

所以我们将行列互换一下才行。wa了半天...

const int MAXN=310;
int n,m;
int a[MAXN][MAXN],d[MAXN];
db p,q,b[MAXN][MAXN],f[MAXN];
inline void GAUSS()
{
rep(1,n,i)
{
int p=i;
rep(i+1,n,j)if(fabs(b[j][i])>fabs(b[p][i]))p=j;
if(p!=i){rep(1,n,j)swap(b[p][j],b[i][j]);swap(f[p],f[i]);}
rep(1,n,j)
{
if(i==j)continue;
db d=b[j][i]/b[i][i];
rep(1,n,k)b[j][k]-=b[i][k]*d;
f[j]-=f[i]*d;
}
}
rep(1,n,i)f[i]=f[i]/b[i][i];
}
int main()
{
freopen("1.in","r",stdin);
get(n);get(m);p=read();q=read();
rep(1,m,i)
{
int get(x);int get(y);
a[y][x]=a[x][y]=1;++d[x];++d[y];
}
rep(1,n,i)
{
rep(1,n,j)
{
if(i==j)b[i][j]=1;
else if(a[i][j])b[i][j]=-(1.0/d[j])*(1.0-p/q);
}
}
f[1]=p/q;GAUSS();
rep(1,n,i)printf("%.9lf\n",f[i]);
return 0;
}

luogu P2973 [USACO10HOL]Driving Out the Piggies G 驱逐猪猡的更多相关文章

  1. Luogu P2973 [USACO10HOL]赶小猪Driving Out the Piggi 后效性DP

    有后效性的DP:$f[u]$表示到$u$的期望次数,$f[u]=\Sigma_{(u,v)} (1-\frac{p}{q})*f[v]*deg[v]$,最后答案就是$f[u]*p/q$ 刚开始$f[1 ...

  2. 洛谷P2973 [USACO10HOL]赶小猪

    https://www.luogu.org/problemnew/show/P2973 dp一遍,\(f_i=\sum_{edge(i,j)}\frac{f_j\times(1-\frac{P}{Q} ...

  3. luogu P2882 [USACO07MAR]Face The Right Way G

    题目描述 Farmer John has arranged his N (1 ≤ N ≤ 5,000) cows in a row and many of them are facing forwar ...

  4. 洛谷P2973 [USACO10HOL]赶小猪(高斯消元 期望)

    题意 题目链接 Sol 设\(f[i]\)表示炸弹到达\(i\)这个点的概率,转移的时候考虑从哪个点转移而来 \(f[i] = \sum_{\frac{f(j) * (1 - \frac{p}{q}) ...

  5. P2973 [USACO10HOL]赶小猪

    跟那个某省省选题(具体忘了)游走差不多... 把边搞到点上然后按套路Gauss即可 貌似有人说卡精度,$eps≤1e-13$,然而我$1e-12$也可以过... 代码: #include<cst ...

  6. [luogu2973]driving out the piggies 驱逐猪猡【高斯消元+概率DP】

    看到题面的那一刻,我是绝望的ORZ 图论加概率期望加好像不沾边的高斯消元???我人直接傻掉 还没学过概率期望的我果断向题解屈服了(然后还是傻掉了两节课来找线性方程.. Description 奶牛们建 ...

  7. [Luogu2973][USACO10HOL]赶小猪Driving Out the Piggi…

    题目描述 The Cows have constructed a randomized stink bomb for the purpose of driving away the Piggies. ...

  8. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  9. 『题解』洛谷P2296 寻找道路

    更好的阅读体验 Portal Portal1: Luogu Portal2: LibreOJ Description 在有向图\(\mathrm G\)中,每条边的长度均为\(1\),现给定起点和终点 ...

随机推荐

  1. 带大家认识CSS层叠上下文/层叠等级的区别和意义

    什么是“层叠上下文” 层叠上下文(stacking context),是HTML中一个三维的概念.在CSS2.1规范中,每个盒模型的位置是三维的,分别是平面画布上的X轴,Y轴以及表示层叠的Z轴.一般情 ...

  2. Numerical Sequence(hard version),两次二分

    题目: 题意: 已知一个序列: 112123123412345123456123456712345678123456789123456789101234567891011... 求这个序列第k个数是多 ...

  3. python写12306抢票

    #!/usr/bin/env python # -*- coding: utf-8 -*- ''' 利用splinter写的一个手动过验证及自动抢票的例子, 大家可以自己扩展或者弄错窗体.web端. ...

  4. WPF中国地图

    实现鼠标移动到某个地区显示Popup弹框 1,地图 <Grid Margin="0,0,0,0" Grid.Row="1"> <Path St ...

  5. DVWA学习记录 PartⅡ

    Command Injection 1. 题目 Command Injection,即命令注入,是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的. 2. Low a. 代码分析 ...

  6. Mysql基础(二):MySQL之存储引擎

    目录 MySQL之存储引擎 1.MySQL存储引擎介绍 2.MySQL结构 3.MySQL存储引擎分类 4.存储引擎的使用 5.总结 MySQL之存储引擎 1.MySQL存储引擎介绍 MySQL中的数 ...

  7. selenium报错Element is not clickable at point及四种解决方法

    使用Selenium时,触发点击事件,经常报如下异常:Element is not clickable at point 1.未加载没加载出来就等待元素加载出来,再往下执行.可以使用python库ti ...

  8. python 并发专题(六):协程相关函数以及实现(gevent)

    文档资源 http://sdiehl.github.io/gevent-tutorial/ 一.协程实现 线程和协程 既然我们上面也说了,协程也被称为微线程,下面对比一下协程和线程: 线程之间需要上下 ...

  9. Python面向对象03 /继承

    Python面向对象03 /继承 目录 Python面向对象03 /继承 1. 初识继承 2. 单继承 3. 多继承 4. 总结 1. 初识继承 概念:专业角度:如果B类继承A类,B类就称为子类,派生 ...

  10. spring security简单登录的认证

    一.思路 1.先导入相关配置(使用spring security校验之后,登录拦截的配置) 2.创建一个 WebSecurityConfig 继承 WebSecurityConfigurerAdapt ...