游走

【问题描述】

【输入格式】

【输出格式】

【样例输入】

3 3

2 3

1 2

1 3

【样例输出】

3.333

【样例说明】


题解:

题意是给一个简单无向连通图,给每条边赋上权值,使期望值最小

贪心让被走到概率大的边的权值小,就可得到最小的期望值

设每个点被走到的概率为p, 出度为d

那么p[i] = Σ p[j] / d[j] (i,j 之间有连边) (从 j 出发选到 i 与 j 连边的概率为 1 / d[j])

移项得 Σ p[j] / d[j] - p[i] = 0

对于每个点我们都可以列出一个含有n个未知数的方程

特别地,p[1]概率需要加一 , p[n] = 1 (起点为1,终点为n)

那么就可以进行高斯消元啦

 #include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
using namespace std;
inline void Scan(int &x)
{
char c;
while((c = getchar()) < '' || c > '');
x = c - '';
while((c = getchar()) >= '' && c <= '') x = (x << ) + (x << ) + c - '';
}
double eps = 1e-;
int n, m;
double c[];
double a[][];
int x[], y[];
int de[];
double ans;
inline void Solve()
{
int now;
double t;
for(int i = ; i <= n; ++i)
{
now = i;
while(fabs(a[i][now]) <= eps && now <= n) ++now;
if(now > n) continue;
for(int j = ; j <= n + ; ++j) swap(a[i][j], a[now][j]);
t = a[i][i];
for(int j = ; j <= n + ; ++j) a[i][j] /= t;
for(int j = ; j <= n; ++j)
if(i != j)
{
t = a[j][i];
for(int k = ; k <= n + ; ++k)
a[j][k] -= a[i][k] * t;
}
}
}
int main()
{
Scan(n), Scan(m);
for(int i = ; i <= m; ++i)
{
Scan(x[i]), Scan(y[i]);
++de[x[i]], ++de[y[i]];
}
for(int i = ; i <= m; ++i)
{
a[x[i]][y[i]] += 1.0 / (double) de[y[i]];
a[y[i]][x[i]] += 1.0 / (double) de[x[i]];
}
for(int i = ; i <= n + ; ++i) a[n][i] = ;
for(int i = ; i <= n; ++i) a[i][i] = -;
a[][n + ] = -;
Solve();
for(int i = ; i <= m; ++i)
c[i] = a[x[i]][n + ] / (double) de[x[i]] + a[y[i]][n + ] / (double) de[y[i]];
sort(c + , c + + m);
for(int i = ; i <= m; ++i)
ans += c[i] * (m - i + );
printf("%.3lf", ans);
}

游走 bzoj 3143的更多相关文章

  1. 3143: [Hnoi2013]游走 - BZOJ

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

  2. BZOJ 3143 HNOI2013 游走 高斯消元 期望

    这道题是我第一次使用高斯消元解决期望类的问题,首发A了,感觉爽爽的.... 不过笔者在做完后发现了一些问题,在原文的后面进行了说明. 中文题目,就不翻大意了,直接给原题: 一个无向连通图,顶点从1编号 ...

  3. BZOJ 3143 游走 | 数学期望 高斯消元

    啊 我永远喜欢期望题 BZOJ 3143 游走 题意 有一个n个点m条边的无向联通图,每条边按1~m编号,从1号点出发,每次随机选择与当前点相连的一条边,走到这条边的另一个端点,一旦走到n号节点就停下 ...

  4. 【BZOJ】【3143】【HNOI2013】游走

    数学期望/高斯消元/贪心 啊……用贪心的思路明显是要把经过次数期望越大的边的权值定的越小,那么接下来的任务就是求每条边的期望经过次数. 拆边为点?nonono,连接x,y两点的边的期望经过次数明显是 ...

  5. BZOJ 3143 游走(高斯消元)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=3143 题意:一个无向连通图,顶点从1编号到n,边从1编号到m.小Z在该图上进行随机游走, ...

  6. bzoj 3143: [Hnoi2013]游走 高斯消元

    3143: [Hnoi2013]游走 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1026  Solved: 448[Submit][Status] ...

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

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

  8. bzoj 3143 随机游走

    题意: 给一个简单无向图,一个人从1号节点开始随机游走(即以相同概率走向与它相邻的点),走到n便停止,问每条边期望走的步数. 首先求出每个点期望走到的次数,每条边自然是从它的两个端点走来. /**** ...

  9. bzoj 3143: [Hnoi2013]游走

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

随机推荐

  1. 【.net 深呼吸】细说CodeDom(1):结构大观

    CodeDom 是啥东东?Html Dom听过吧,XML Dom听过吧.DOM一般可翻译为 文档对象模型,那 Code + DOM呢,自然是指代码文档模型了.如果你从来没接触过 CodeDom,你大概 ...

  2. JavaScript进阶之路(一)初学者的开始

    一:写在前面的问题和话 一个javascript初学者的进阶之路! 背景:3年后端(ASP.NET)工作经验,javascript水平一般般,前端水平一般般.学习资料:犀牛书. 如有误导,或者错误的地 ...

  3. 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

    从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

  4. shell简介

    Shell作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. shell使用的熟练程度反映了用户对U ...

  5. Python标准模块--Iterators和Generators

    1 模块简介 当你开始使用Python编程时,你或许已经使用了iterators(迭代器)和generators(生成器),你当时可能并没有意识到.在本篇博文中,我们将会学习迭代器和生成器是什么.当然 ...

  6. Android ViewPager打造3D画廊

    本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发. 网上有很多关于使用Gallery来打造3D画廊的博客,但是在关于Gallery的官方说法中表明: This cl ...

  7. vmware上网的方式

    vmware上网设置 vmware虚拟机上网设置 我的一些心得,如下: 如何使vmware虚拟机中的操作系统能够上网? 第一种情况: 主机使用PPPOE拨号上网 方法一:NAT方式 1.先关闭虚拟机中 ...

  8. C++内联函数

    在C语言中,我们使用宏定义函数这种借助编译器的优化技术来减少程序的执行时间,那么在C++中有没有相同的技术或者更好的实现方法呢?答案是有的,那就是内联函数.内联函数作为编译器优化手段的一种技术,在降低 ...

  9. Effective前端2:优化html标签

    div { float: left; } .keyboard > div + div { margin-left: 8px; } --> div{display:table-cell;ve ...

  10. "NHibernate.Exceptions.GenericADOException: could not load an entity" 解决方案

     今天,测试一个项目的时候,抛出了这个莫名其妙的异常,然后就开始了一天的调试之旅... 花了很长时间,没有从代码找出任何问题... 那么到底哪里出问题呢? 根据下面那段长长的错误日志: -- ::, ...