大前提,把两个点的组合看成一种状态 x

两种思路 O(n^7) f[x]表示在某一个点的前提下,这个状态经过那个点的概率,用相邻的点转移状态,高斯一波就好了

O(n^6) 想象成臭气弹,这个和那个的区别只是状态维数变化,f[x]表示这个状态出现的概率,高斯一下就好了

我比较傻只想出来O(n^7)

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef double D;
D a[][],source[][],ans[],keep[],get[],sz;
int via[][],need,map[];
int n,m,Petya,Vasya;
inline int hash(int x,int y)
{
if(x>y)x^=y^=x^=y;
int gg=x*+y;
if(map[gg]==)map[gg]=++sz;
return map[gg];
}
inline D abs(D x)
{
return x<0.0?0.0-x:x;
}
void gause()
{
for(int i=,k=;i<=need&&k<=need;i++,k++)
{
int temp=i;
D h=abs(a[i][k]);
for(int j=i+;j<=need;j++)
if(h<abs(a[j][k]))
{
temp=j;
h=abs(a[j][k]);
}
if(temp!=i)
{
for(int j=k;j<=need+;j++)
swap(a[i][j],a[temp][j]);
}
for(int j=i+;j<=need;j++)
{
h=a[j][k]/a[i][k];
for(int l=k;l<=need+;l++)
a[j][l]-=h*a[i][l];
}
}
for(int i=need;i>;i--)
{
for(int j=i+;j<=need;j++)
a[i][need+]-=a[i][j]*get[j];
get[i]=a[i][need+]/a[i][i];
}
}
void blabla(int x)
{
for(int i=;i<;i++)
for(int j=;j<;j++)
a[i][j]=source[i][j];
a[hash(x,x)][need+]=1.0;
gause();
ans[x]=get[hash(Petya,Vasya)];
}
void pre()
{
scanf("%d%d%d%d",&n,&m,&Petya,&Vasya);
for(int i=;i<=m;i++)
{
int x,y;
scanf("%d%d",&x,&y);
via[x][++via[x][]]=y;
via[y][++via[y][]]=x;
}
need=n*(n+)/;
for(int i=;i<=n;i++)
scanf("%lf",&keep[i]);
for(int i=;i<=n;i++)
for(int j=i;j<=n;j++)
{
int x=hash(i,j);
if(i==j)
{
source[x][x]=1.0;
continue;
}
D Viai=1.0*via[i][],Viaj=1.0*via[j][];
D Keep=(1.0-keep[i])*(1.0-keep[j])/Viai/Viaj;
for(int z=;z<=via[i][];z++)
for(int y=;y<=via[j][];y++)
source[x][hash(via[i][z],via[j][y])]+=Keep;
Keep=(1.0-keep[i])*keep[j]/Viai;
for(int z=;z<=via[i][];z++)
source[x][hash(via[i][z],j)]+=Keep;
Keep=(1.0-keep[j])*keep[i]/Viaj;
for(int y=;y<=via[j][];y++)
source[x][hash(via[j][y],i)]+=Keep;
source[x][x]+=keep[i]*keep[j];
source[x][x]-=1.0;
}
}
void work()
{
ans[n]=1.0;
for(int i=;i<n;i++)
{
blabla(i);
ans[n]-=ans[i];
}
}
void print()
{
for(int i=;i<=n;i++)
printf("%.10lf ",ans[i]);
}
int main()
{
pre();
work();
print();
}

BZOJ 3270 博物馆 && CodeForces 113D. Museum 期望概率dp 高斯消元的更多相关文章

  1. LightOJ - 1151概率dp+高斯消元

    概率dp+高斯消元 https://vjudge.net/problem/LightOJ-1151 题意:刚开始在1,要走到100,每次走的距离1-6,超过100重来,有一些点可能有传送点,可以传送到 ...

  2. BZOJ3270 博物館 概率DP 高斯消元

    BZOJ3270 博物館 概率DP 高斯消元 @(XSY)[概率DP, 高斯消元] Description 有一天Petya和他的朋友Vasya在进行他们众多旅行中的一次旅行,他们决定去参观一座城堡博 ...

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

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

  4. 【bzoj1778】[Usaco2010 Hol]Dotp 驱逐猪猡 矩阵乘法+概率dp+高斯消元

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

  5. BZOJ 3270: 博物馆 [概率DP 高斯消元]

    http://www.lydsy.com/JudgeOnline/problem.php?id=3270 题意:一张无向图,一开始两人分别在$x$和$y$,每一分钟在点$i$不走的概率为$p[i]$, ...

  6. 【BZOJ3640】JC的小苹果 概率DP+高斯消元

    [BZOJ3640]JC的小苹果 Description 让我们继续JC和DZY的故事. “你是我的小丫小苹果,怎么爱你都不嫌多!” “点亮我生命的火,火火火火火!” 话说JC历经艰辛来到了城市B,但 ...

  7. BZOJ 3270 博物馆 ——概率DP 高斯消元

    用$F(i,j)$表示A在i,B在j的概率. 然后很容易列出转移方程. 然后可以高斯消元了! 被一个问题困扰了很久,为什么起始点的概率要加上1. (因为其他博客上都是直接写成-1,雾) 考虑初始状态是 ...

  8. BZOJ 3143: [Hnoi2013]游走 [概率DP 高斯消元]

    一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边的编号的分 ...

  9. 【概率dp 高斯消元】bzoj3270: 博物馆

    一类成环概率dp的操作模式 Description 有一天Petya和他的朋友Vasya在进行他们众多旅行中的一次旅行,他们决定去参观一座城堡博物馆.这座博物馆有着特别的样式.它包含由m条走廊连接的n ...

随机推荐

  1. STM32Cube 5.0 使用V1.7.0的固件库生成keil5环境下的F1工程时发现问题

    生成的stm32f1xx_hal_msp.c文件里面,HAL_MspInit(void)函数居然没有了之前1.6库里面的系统中断优先级的设置: /* MemoryManagement_IRQn int ...

  2. python递归函数(计算阶乘)

    def f1(x,x1=1): if x == 1: return x1 #x1这个值为我们所需要的值,所以返回 x1 *= x r = f1(x-1,x1) #r接收返回值,并在下面接着返回 ret ...

  3. .Net 面试题 汇总(二)

    51..net中读写XML的类都归属于哪些命名空间? 答:System.Xml 52.解释一下UDDI.WSDL的意义及其作用. 答:UDDI即统一描述.发现和集成协议.作用: 用来说明一个Web服务 ...

  4. maven之package与install的区别

    mvn clean package 先看命令的执行过程 mvn clean install 同样先看执行过程 mvn clean package依次执行了clean.resources.compile ...

  5. 7.Mongodb复制(副本集)

    1.复制 什么是复制 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性 复制还允许从硬件故障和服务中断中恢复数据 为什么要复制 数据备份 数据灾难恢复 ...

  6. javascript代码规范 [转]

    原文:http://www.css88.com/archives/5366 全局命名空间污染与 IIFE 总是将代码包裹成一个 IIFE(Immediately-Invoked Function Ex ...

  7. MySQL数据库性能优化专题

    摘录: 书:<MySQL性能调优与架构设计> 一个系列: (按顺序排一下) MySQL 数据库性能优化之缓存参数优化 http://isky000.com/database/mysql-p ...

  8. ACE学习综述(1)

    1. ACE学习综述 1.1. ACE项目的优点 可以跨平台使用,基本上可以实现一次编写,多平台运行. ACE本身不仅仅是一个简单的网络框架,对于网络框架涉及到的进程管理.线程管理等系统本身相关的内容 ...

  9. 【python模块】——logging

    python学习——logging模块

  10. Python 基本文件操作

    文件模式 'r' 读模式 'w' 写模式 (清除掉旧有数据并重新开始) 'a' 追加模式 'b' 二进制模式 '+' 读/写模式 注意: 'b'   : 二进制模式 可添加到其他模式中使用 '+'  ...