记住一开始和后来的经过是两个事件因此概率可以大于一

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<vector>
#include<algorithm>
#define MAXN 333
using namespace std;
typedef double D;
D a[MAXN][MAXN],ans[MAXN];
int p,q,n,m;
vector<int> Link[MAXN];
int in[MAXN];
inline D abs(D x)
{
return x<?0.0-x:x;
}
inline void swap(D &x,D &y)
{
D temp=x;
x=y;
y=temp;
}
void gauss()
{
for(int i=,k=;i<=n;i++,k++)
{
int t=i;
D h=abs(a[i][k]);
for(int j=i+;j<=n;j++)
if(abs(a[j][k])>abs(a[t][k]))
{
t=j;
h=abs(a[j][k]);
}
if(t!=i)
{
for(int j=k;j<=n+;j++)
swap(a[i][j],a[t][k]);
}
for(int j=i+;j<=n;j++)
{
h=a[j][k]/a[i][k];
for(int l=k;l<=n+;l++)
a[j][l]-=a[i][l]*h;
}
}
for(int i=n;i>;i--)
{
for(int j=i+;j<=n;j++)
a[i][n+]-=ans[j]*a[i][j];
ans[i]=a[i][n+]/a[i][i];
}
}
int main()
{
freopen("dotp.in","r",stdin);
freopen("dotp.out","w",stdout);
scanf("%d%d%d%d",&n,&m,&p,&q);
for(int i=;i<=m;i++)
{
int x,y;
scanf("%d%d",&x,&y);
Link[x].push_back(y);
in[x]++;
Link[y].push_back(x);
in[y]++;
}
for(int i=;i<=n;i++)
{
a[i][i]=-1.0;
for(int j=;j<Link[i].size();j++)
a[i][Link[i][j]]=(D)(1.0-(D)p/q)*(1.0/in[Link[i][j]]);
a[i][+n]=0.0;
}
a[][+n]=-1.0;
gauss();
for(int i=;i<=n;i++)
{
ans[i]=ans[i]*p/q;
if(ans[i]==-0.0)
ans[i]=0.0;
printf("%.9lf\n",ans[i]);
}
return ;
}

[USACO Hol10] 臭气弹 图上期望概率dp 高斯的更多相关文章

  1. BZOJ2337: [HNOI2011]XOR和路径 期望概率dp 高斯

    这个题让我认识到我以往对于图上期望概率的认识是不完整的,我之前只知道正着退还硬生生的AC做过的所有图,那么现在让我来说一下逆退,一般来说对于概率性的东西都只是正推,因为有了他爸爸才有了他,而对于期望性 ...

  2. BZOJ 3270 博物馆 && CodeForces 113D. Museum 期望概率dp 高斯消元

    大前提,把两个点的组合看成一种状态 x 两种思路 O(n^7) f[x]表示在某一个点的前提下,这个状态经过那个点的概率,用相邻的点转移状态,高斯一波就好了 O(n^6) 想象成臭气弹,这个和那个的区 ...

  3. 【BZOJ 3652】大新闻 数位dp+期望概率dp

    并不难,只是和期望概率dp结合了一下.稍作推断就可以发现加密与不加密是两个互相独立的问题,这个时候我们分开算就好了.对于加密,我们按位统计和就好了;对于不加密,我们先假设所有数都找到了他能找到的最好的 ...

  4. 【BZOJ 3811】玛里苟斯 大力观察+期望概率dp+线性基

    大力观察:I.从输出精准位数的约束来观察,一定会有猫腻,然后仔细想一想,就会发现输出的时候小数点后面不是.5就是没有 II.从最后答案小于2^63可以看出当k大于等于3的时候就可以直接搜索了 期望概率 ...

  5. 【NOIP模拟赛】黑红树 期望概率dp

    这是一道比较水的期望概率dp但是考场想歪了.......我们可以发现奇数一定是不能掉下来的,因为若奇数掉下来那么上一次偶数一定不会好好待着,那么我们考虑,一个点掉下来一定是有h/2-1个红(黑),h/ ...

  6. BZOJ1415: [Noi2005]聪聪和可可 最短路 期望概率dp

    首先这道题让我回忆了一下最短路算法,所以我在此做一个总结: 带权: Floyed:O(n3) SPFA:O(n+m),这是平均复杂度实际上为O(玄学) Dijkstra:O(n+2m),堆优化以后 因 ...

  7. 期望概率DP

    期望概率DP 1419: Red is good ​ Description ​ 桌面上有\(R\)张红牌和\(B\)张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付 ...

  8. HDU 3853 期望概率DP

    期望概率DP简单题 从[1,1]点走到[r,c]点,每走一步的代价为2 给出每一个点走相邻位置的概率,共3中方向,不动: [x,y]->[x][y]=p[x][y][0] ,  右移:[x][y ...

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

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

随机推荐

  1. python 装饰器 (多个装饰器装饰一个函数---装饰器前套一个函数)

    #带参数的装饰器 #500个函数 # import time # FLAGE = False # def timmer_out(flag): # def timmer(func): # def inn ...

  2. 2-Linux C语言指针与内存-学习笔记

    Linux C语言指针与内存 前面我们对于: c语言的基本用法 makeFile文件的使用 main函数的详解 标准输入输出流以及错误流管道 工具与原理 指针与内存都是c语言中的要点与难点 指针 数组 ...

  3. win7 下安装oracle 11g出现错误: 启动服务出现错误 找不到服务OracleMTSRecoveryService

    这种错误是在多次安装oracle都没有成功的情况下发生的. 正确安装oracle,是有前提条件的 1,安装最新的jdk,不是jre!!(并配好环境变量,在cmd中测试 java -version与ja ...

  4. Hadoop学习(一) Hadoop是什么

    Hadoop是什么? Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用Java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算. Hadoop框架 ...

  5. Delphi中ModalResult的使用

    Delphi中ModalResult的功能非常实用. 在自己设计的Dialog界面中,选择相应的按钮,设置按钮的 ModalResult属性为mrOK .mrCancel 等.这样的设置,当按下该按钮 ...

  6. C++11中rvalue references的使用

    Rvalue references are a feature of C++ that was added with the C++11 standard. The syntax of an rval ...

  7. 5-sql语句

    1 [oracle@ocp ~]$ . oraenv # ORACLE_SID = [oracle] ? orcl The Oracle base has been set to /u01/app/o ...

  8. 配置ORACLE的PRO*C环境

    1.访问数据库的方法    在ORACLE数据库管理和系统中,有三种访问数据库的方法:    ⑴.用SQL*Plus, 它有SQL命令以交互的应用程序访问数据库:    ⑵.用第四代语言应用开发工具开 ...

  9. android开源项目之OTTO事件总线(二)官方demo解说

    官方demo见  https://github.com/square/otto 注意自己该编译版本为2.3以上,默认的1.6不支持match_parent属性,导致布局文件出错. 另外需要手动添加an ...

  10. ant-design 实现一个登陆窗口

    前提:已经完成项目实战(https://ant.design/docs/react/practical-projects-cn#定义-Model) 如果要想实现一个登陆窗口,首先得有一个ui,想到的是 ...