题意:

  给一个简单无向图,一个人从1号节点开始随机游走(即以相同概率走向与它相邻的点),走到n便停止,问每条边期望走的步数.

首先求出每个点期望走到的次数,每条边自然是从它的两个端点走来.

 /**************************************************************
Problem: 3143
User: idy002
Language: C++
Result: Accepted
Time:736 ms
Memory:9956 kb
****************************************************************/ #include <cstdio>
#include <cmath>
#include <algorithm>
#define N 510
#define M N*N
using namespace std; int n, m;
int head[N], dest[M], next[M], etot;
int dgr[N], uu[M], vv[M], qu[M];
double ww[M];
double a[N][N]; void adde( int u, int v ) {
etot++;
dest[etot] = v;
next[etot] = head[u];
head[u] = etot;
}
void gauss() {
int i, j, k;
for( i=; i<=n; i++ ) {
j=i;
for( k=i+; k<=n; k++ )
if( fabs(a[k][i])>fabs(a[j][i]) ) j=k;
for( k=i; k<=n+; k++ )
swap( a[j][k], a[i][k] );
for( j=i+; j<=n; j++ ) {
double r = a[j][i]/a[i][i];
for( k=i; k<=n+; k++ )
a[j][k] -= a[i][k]*r;
}
}
for( int i=n; i>=; i-- ) {
a[i][n+] /= a[i][i];
a[i][i] = 1.0;
for( int j=i-; j>=; j-- ) {
a[j][n+] -= a[j][i]*a[i][n+];
a[j][i] = 0.0;
}
}
}
bool cmp( int a, int b ) {
return ww[a] > ww[b];
}
int main() {
scanf( "%d%d", &n, &m );
for( int i=; i<=m; i++ ) {
scanf( "%d%d", uu+i, vv+i );
adde( uu[i], vv[i] );
adde( vv[i], uu[i] );
dgr[uu[i]]++;
dgr[vv[i]]++;
}
for( int i=; i<=n; i++ )
a[i][i] = -1.0;
a[][n+] = -;
for( int u=; u<=n; u++ ) {
for( int t=head[u]; t; t=next[t] ) {
int v=dest[t];
if( v==n ) continue;
a[u][v] += 1.0/dgr[v];
}
}
gauss();
for( int i=; i<=m; i++ ) {
int u=uu[i], v=vv[i];
if( u!=n ) ww[i]+=a[u][n+]/dgr[u];
if( v!=n ) ww[i]+=a[v][n+]/dgr[v];
}
for( int i=; i<=m; i++ )
qu[i] = i;
sort( qu+, qu++m, cmp );
double ans = 0.0;
for( int i=; i<=m; i++ )
ans += i * ww[qu[i]];
printf( "%.3lf\n", ans );
}

bzoj 3143 随机游走的更多相关文章

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

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

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

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

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

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

  4. bzoj 3143: [Hnoi2013]游走

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

  5. bzoj 3143 [Hnoi2013]游走 期望dp+高斯消元

    [Hnoi2013]游走 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3394  Solved: 1493[Submit][Status][Disc ...

  6. BZOJ 3143: [Hnoi2013]游走 概率与期望+高斯消元

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

  7. bzoj 3143 [Hnoi2013]游走(贪心,高斯消元,期望方程)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3143 [题意] 给定一个无向图,从1走到n,走过一条边得到的分数为边的标号,问一个边的 ...

  8. [BZOJ 3143][HNOI2013]游走(数学期望)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3143 分析: 易得如果知道了每条边经过的数学期望,那就可以贪心着按每条边的期望的大小赋 ...

  9. ●BZOJ 3143 [Hnoi2013]游走

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3143题解: 期望dp,高斯消元 首先有这样一种贪心分配边的编号的方案:(然后我没想到,233 ...

随机推荐

  1. passwd: Have exhausted maximum number of retries for service【转】

    使用命令passwd修改密码时,遇到如下问题: # echo 'utf8'|passwd zhangsan --stdin Changing password for user zhangsan. p ...

  2. windows环境变量PATH顺序的重要性

    PATH是路径的意思,PATH环境变量中存放的值,就是一连串的路径.不同的路径之间,用英文的分号间隔开.系统在执行用户命令时,若用户未给出绝对路径,则首先在当前目录下寻找相应的可执行文件.批处理文件等 ...

  3. 使用第三方工具Xtrabackup进行MySQL备份

    使用Xtrabackup进行MySQL备份: 一.安装 1.简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtr ...

  4. 不同系统与程序修改java.library.path的位置(转)

    原文地址:http://blog.csdn.net/quqibing001/article/details/51201768 Linux环境 系统变量LD_LIBRARY_PATH来添加Java.li ...

  5. 解执行maven项目出现 SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”. error

    最近再弄maven项目,运行起来没有问题,但是Console控制台会报错,比如说如下的问题异常提示: 由此我们可以看出,报出错误的地方主要是slf4j的jar包,而故障码中“Failed to loa ...

  6. 详解Android属性动画

    前面我们讲到的属性动画都是使用代码的定义方式:Android属性动画之ValueAnimator和Android属性动画之ObjectAnimator和AnimatorSet,下面我们再来看看使用XM ...

  7. 破解idea

    2019最新注册码 地址:  http://idea.lanyus.com/ https://blog.csdn.net/best_luxi/article/details/81479820

  8. Codeforces 448C Painting Fence(分治法)

    题目链接:http://codeforces.com/contest/448/problem/C 题目大意:n个1* a [ i ] 的木板,把他们立起来,变成每个木板宽为1长为 a [ i ] 的栅 ...

  9. python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)

    一.上传文件 上传一个图片 使用input type="file",来上传一个文件.注意:form表单必须添加属性enctype="multipart/form-data ...

  10. Promise 基础学习

    Promise 是ES6的特性之一,采用的是 Promise/A++ 规范,它抽象了异步处理的模式,是一个在JavaScript中实现异步执行的对象. 按照字面释意 Promise 具有"承 ...