bzoj 3143 随机游走
题意:
给一个简单无向图,一个人从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 随机游走的更多相关文章
- BZOJ 3143 HNOI2013 游走 高斯消元 期望
这道题是我第一次使用高斯消元解决期望类的问题,首发A了,感觉爽爽的.... 不过笔者在做完后发现了一些问题,在原文的后面进行了说明. 中文题目,就不翻大意了,直接给原题: 一个无向连通图,顶点从1编号 ...
- bzoj 3143: [Hnoi2013]游走 高斯消元
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1026 Solved: 448[Submit][Status] ...
- BZOJ 3143: [Hnoi2013]游走 [概率DP 高斯消元]
一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边的编号的分 ...
- bzoj 3143: [Hnoi2013]游走
Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点, ...
- bzoj 3143 [Hnoi2013]游走 期望dp+高斯消元
[Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3394 Solved: 1493[Submit][Status][Disc ...
- BZOJ 3143: [Hnoi2013]游走 概率与期望+高斯消元
Description 一个无向连通图,顶点从1编号到N,边从1编号到M.小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获 ...
- bzoj 3143 [Hnoi2013]游走(贪心,高斯消元,期望方程)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3143 [题意] 给定一个无向图,从1走到n,走过一条边得到的分数为边的标号,问一个边的 ...
- [BZOJ 3143][HNOI2013]游走(数学期望)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3143 分析: 易得如果知道了每条边经过的数学期望,那就可以贪心着按每条边的期望的大小赋 ...
- ●BZOJ 3143 [Hnoi2013]游走
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3143题解: 期望dp,高斯消元 首先有这样一种贪心分配边的编号的方案:(然后我没想到,233 ...
随机推荐
- 分布式系列 - dubbo服务telnet命令【转】
dubbo服务发布之后,我们可以利用telnet命令进行调试.管理.Dubbo2.0.5以上版本服务提供端口支持telnet命令,下面我以通过实例抛砖引玉一下: 1.连接服务 测试对应IP和端口下的d ...
- 对WinMain程序入口函数返回值为msg.wParam的几点理解
原文地址:http://blog.csdn.net/setflvet/article/details/6983224 1.在WinMain主函数中,最后的返回值是msg.wParam,这个参数是传递给 ...
- 001_a记录和canme的区别
1.什么是域名解析? 域名解析就是国际域名或者国内域名以及中文域名等域名申请后做的到IP地址的转换过程.IP地址是网路上标识您站点的数字地址,为了简单好记,采用域名来代替ip地址标识站点地址.域名的解 ...
- centos7 部署 docker ce
=============================================== 2019/4/9_第1次修改 ccb_warlock === ...
- Go语言规格说明书 之 内建函数(Built-in functions)
go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,介绍Go语言的 ...
- Python-CSS高级 题目
一.简答1.完整总结display三种基础显示方式的显示方式与嵌套规则 /* inline */ /*1.同行显示, 就相当于纯文本, 当一行显示不下, 如就是一个字显示不下,那么显示不下的那一个字就 ...
- npm下载速度过慢的解决办法
第一种方式: 在cmd 输入指令:npm config set registry https://registry.npm.taobao.org 不建议使用cnpm! 设置完后,注意检查:输入指令:n ...
- STM32应用实例十:简析STM32 I2C通讯死锁问题
I2C接口是一种使用非常普遍的MCU与外部设备的接口方式,在STM32中也集成了I2C接口,我们也常常使用它来与外围的传感器等设备通讯. 最近在我们使用STM32F1VET6读取压力和温湿度传感器数据 ...
- 20个实用的webApp前端开发技巧
自Iphone和Android这两个牛逼的手机操作系统发布以来,在互联网界从此就多了一个新的名词-WebApp(意为基于WEB形式的应用程序,运行在高端的移动终端设备). 开发者们都知道在高端智能手机 ...
- Java中BigDecimal类介绍及用法
Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高精度计算. 其中 BigInteger 类是 ...