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

刚开始$f[1]=1$,,因为炸弹初始在$1$号节点。所以增广矩阵中$a[1][n+1]=1$。

系数矩阵$a[i][i]$赋值为1,其他点的系数写成负数,相当于是所有的加起来$=0$.

#include<cstdio>
#include<iostream>
#include<cmath>
#define R register int
#define db long double
using namespace std;
const db eps=1E-;
const int N=;
db a[N][N],P;
int mp[N][N],r[N],n,m,p,q;
inline int g() {
R ret=,fix=; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-:fix;
do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret*fix;
}
inline bool ck0(const db& x) {return x<eps&&x>-eps;}
inline void Gauss(int n) {
for(R i=;i<=n;++i) { R p=i;
for(R j=i+;j<=n;++j) if(ck0(a[p][i])||fabs(a[p][i])<fabs(a[j][i])) p=j;
if(p!=i) swap(a[p],a[i]);
for(R j=i+;j<=n;++j) if(!ck0(a[j][i])) {
register db t=a[j][i]/a[i][i];
for(R k=;k<=n+;++k) a[j][k]-=t*a[i][k];
}
} for(R i=n;i>=;--i) {
for(R j=n;j>i;--j) a[i][n+]-=a[i][j]*a[j][n+];
a[i][n+]/=a[i][i];
}
}
signed main() {
n=g(),m=g(),p=g(),q=g(); P=(db)p/q;
for(R i=,u,v;i<=m;++i) u=g(),v=g(),mp[u][v]=mp[v][u]=,++r[u],++r[v];
for(R i=;i<=n;++i) a[i][i]=;
for(R i=;i<=n;++i) for(R j=;j<=n;++j) if(mp[i][j]) a[i][j]-=(1.0-P)/r[j];
a[][n+]=; Gauss(n); for(R i=;i<=n;++i) printf("%.9Lf\n",a[i][n+]*P);

2019.05.24

Luogu P2973 [USACO10HOL]赶小猪Driving Out the Piggi 后效性DP的更多相关文章

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

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

  2. 洛谷2973 [USACO10HOL]赶小猪Driving Out the Piggi… 概率 高斯消元

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - 洛谷2973 题意概括 有N个城市,M条双向道路组成的地图,城市标号为1到N.“西瓜炸弹”放在1号城市,保证城 ...

  3. luogu P2973 [USACO10HOL]Driving Out the Piggies G 驱逐猪猡

    luogu LINK:驱逐猪猡 bzoj LINK:猪猪快跑 问题是在1时刻有个炸蛋在1号点 这个炸弹有p/q的概率爆炸 如果没有爆炸 那么会有1/di的概率选择一条边跳到另外一个点上重复这个过程. ...

  4. 洛谷P2973 [USACO10HOL]赶小猪

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

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

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

  6. P2973 [USACO10HOL]赶小猪

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

  7. [Luogu2973][USACO10HOL]赶小猪

    Luogu sol 首先解释一波这道题无重边无自环 设\(f_i\)表示\(i\)点上面的答案. 方程 \[f_u=\sum_{v,(u,v)\in E}(1-\frac PQ)\frac{f_v}{ ...

  8. Luogu2973:[USACO10HOL]赶小猪

    题面 Luogu Sol 设\(f[i]\)表示炸弹到\(i\)不爆炸的期望 高斯消元即可 另外,题目中的概率\(p/q\)实际上为\(1-p/q\) 还有,谁能告诉我不加\(EPS\),为什么会输出 ...

  9. [USACO10HOL]赶小猪

    嘟嘟嘟 这题和某一类概率题一样,大体思路都是高斯消元解方程. 不过关键还是状态得想明白.刚开始令\(f[i]\)表示炸弹在点\(i\)爆的概率,然后发现这东西根本无法转移(或者说概率本来就是\(\fr ...

随机推荐

  1. Operating System-Kickoff:什么是操作系统&&操作系统的核心概念

    接下来会写一系列Operating System(操作系统)的文章,今天先开个头.本文主要内容: 什么是操作系统 操作系统的核心概念 程序=数据结构+算法 一.什么是操作系统 1.1 操作系统是对硬件 ...

  2. B+树索引和哈希索引的明显区别是:

    如果是等值查询,那么哈希索引明显有绝对优势,因为只需要经过一次算法即可找到相应的键值:当然了,这个前提是,键值都是唯一的.如果键值不是唯一的,就需要先找到该键所在位置,然后再根据链表往后扫描,直到找到 ...

  3. python xml包 xml.etree.ElementTree使用记录

    19.7.1 教程 这是一个简短的教程使用xml.etree.ElementTree(简称为et).目标是展示一些构建模块和模块的基本概念 9.7.1.1. XML tree and elements ...

  4. Poj 1316 Self Numbers(水题)

    一.Description In 1949 the Indian mathematician D.R. Kaprekar discovered a class of numbers called se ...

  5. virtual judge(专题一 简单搜索 E)

    Description Given a positive integer n, write a program to find out a nonzero multiple m of n whose ...

  6. 【转】 Pro Android学习笔记(三八):Fragment(3):基础小例子-续

    目录(?)[-] Step 2实现Fragment指定调用类TitleFragment onInflate和onAttach onCreate和onCreateView onActivityCreat ...

  7. Dubbo注册中心的四种配置方式详解

    Dubbo目前支持4种注册中心,(multicast,zookeeper,redis,simple) 推荐使用Zookeeper注册中心. 一.Multicast注册中心 不需要启动任何中心节点,只要 ...

  8. JVM体系结构之五:本地方法栈

    对于一个运行中的Java程序而言,它还可能会用到一些跟本地方法相关的数据区.当某个线程调用一个本地方法时,它就进入了一个全新的并且不再受虚拟机限制的世界.本地方法可以通过本地方法接口来访问虚拟机的运行 ...

  9. CSS 关于文本 背景 边框整理

    文本与字体 1)阴影:text-shadow 格式:text-shadow:5px 5px 3px #FFFFFF分别对应 水平方向 垂直方向 模糊程度 颜色值 代码: <!DOCTYPE ht ...

  10. python超大数计算

    In [26]: %time a = 6789**100000CPU times: user 0 ns, sys: 0 ns, total: 0 nsWall time: 6.2 µsIn [27]: ...