LINK

定义f[i]f[i]f[i]表示在点iii爆炸的概率

然后似乎不太好转移…

定义f[i]f[i]f[i]表示经过点iii的期望次数,PPP表示每小时爆炸的概率,iii有in[i]in[i]in[i]条出边

那么这个很好转移,可以使用高斯消元

f[i]=∑(i,j)f[j]∗(1−P)∗1in[j]f[i]=\sum\limits_{(i,j)}f[j]*(1-P)*\frac{1}{in[j]}f[i]=(i,j)∑​f[j]∗(1−P)∗in[j]1​

对于起点,由于一开始就在起点,所以额外加上一就好了

知道了经过次数,最后乘以PPP就好了

#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e5+10;
const double eps = 1e-9;
double mp[309][309],p,q;
int n,m,in[maxn];
struct edge{int to,nxt;
}d[maxn]; int head[maxn],cnt=1;
void add(int u,int v){ d[++cnt] = (edge){v,head[u]},head[u] = cnt; }
void guass(int n)
{for(int i=1;i<=n;i++){int r = i;for(int j=i+1;j<=n;j++)if( fabs(mp[j][i])>fabs(mp[r][i]) )  r = j;if( i!=r )  swap( mp[i],mp[r] );if( fabs( mp[r][i] )<eps )   continue;double div = mp[i][i];for(int j=i;j<=n+1;j++) mp[i][j] /= div;for(int j=1;j<=n;j++){if( i==j )  continue;div = mp[j][i];for(int k=i;k<=n+1;k++)    mp[j][k] -= div*mp[i][k];}}
}
int main()
{cin >> n >> m >> p >> q;   p /= q;for(int i=1;i<=m;i++){int l,r; cin >> l >> r;add(l,r); add(r,l); in[l]++, in[r]++;}for(int i=1;i<=n;i++){mp[i][i] = 1;for(int j=head[i];j;j=d[j].nxt ){int v = d[j].to;mp[i][v] -= (1.0-p)/in[v];}}mp[1][n+1] = 1;guass(n);for(int i=1;i<=n;i++)    printf("%.9lf\n",mp[i][n+1]*p );
}

#1778. [Usaco2010 Hol]Dotp 驱逐猪猡(高斯消元)相关推荐

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

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

  2. 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 ...

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

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

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

    1778: [Usaco2010 Hol]Dotp 驱逐猪猡 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 690  Solved: 269 [Sub ...

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

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

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

    Description 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 300)一共N个猪城.这些城市由M (1 <= M <= 44, ...

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

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

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

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

  9. bzoj 1778: [Usaco2010 Hol]Dotp 驱逐猪猡

    Description 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 300)一共N个猪城.这些城市由M (1 <= M <= 44, ...

  10. bzoj 1778 [Usaco2010 Hol]Dotp 驱逐猪猡

    http://www.elijahqi.win/archives/3299 Description 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= ...

最新文章

  1. 什么是Python的var_dump()的Python等价物? [重复]
  2. 基于Walle的多渠道快速打包自动脚本
  3. 计算机控制系统从本质上看,计算机控制系统测试题.doc
  4. C++ 包含目录、库目录、附加依赖项详解
  5. linux那些事之zero page
  6. 进入环境_大学新生,进入新环境该怎样和舍友、同学相处
  7. NodeMCU学习(四):与其他设备通信
  8. 文件操作 详解(freopen)(C++)
  9. 【SSM分布式架构电商项目-14】后台CMS内容管理系统管理前台首页广告
  10. 安防蓝海带来亿万商机 汉王人脸通掀起产业风暴
  11. ADS2020 Crack使用教程
  12. 在 Hexo 中使用 iconfont 图标
  13. 前端面试需要准备什么?
  14. CSDN-Markdown语法集锦
  15. snowboy个人模型制作
  16. Spring IoC 和 AOP
  17. 力扣第四十六题(全排列)详解
  18. lamda函数的简介
  19. 没有换行又很多很多行的代码,如何快捷换行?
  20. Android分享视频链接到VK无法打开

热门文章

  1. Java 去除字符串中的空白字符
  2. 盛大啊啊实打实倒萨的a
  3. 《CSAPP》(第3版)答案(第四章)
  4. VBox 启动虚拟机失败 - NtCreateFile(\Device\VBoxDrvStub)
  5. python判断正数和负数教案_(完整版)正数和负数教学设计
  6. Kettle笔记 —— 利用Transformation和job完成不同数据源的数据处理和写入
  7. 【论文笔记】EagerMOT:3D Multi-Object Tracking via Sensor Fusion
  8. 财富、通胀与印钞——读《原则2 :应对变化中的世界秩序》(上)
  9. python3爬取拉钩招聘数据
  10. Windows Office 365 Pro Plus安装