bzoj3143游走
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3143
学到了无向图中点被经过的期望次数和边被经过的期望次数。
一个点被经过的期望次数 就是 与它相连的点被经过的期望次数/那个点的度数 的求和。
https://www.cnblogs.com/owenyu/p/6724721.html这个博客说的很好。
该博客让我受到的启发就是一个点被经过的期望次数是依赖于与它相连的点的,可是要算它的时候相连点还没算出来,算相连点又要用到它的数据,令人头痛。
而如果是有向图中,就可以以拓扑序为计算顺序了。
而再想想无向图中计算的形式,不就很适合列方程吗!还有高斯消元这个好方法去解方程!
列式子可知移项后f [ i ] [ i ]的系数一定是-1。相连点的系数就是1/其度数。
需要注意的是自己一开始就在1点,不需要从别的点走过来就自带1次;
而从n点不能走到其他点!
自己写高斯消元总是犯的错误:第 i 行把第 i 个未知数的系数调成1时 要么倒序,要么另存!
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,M=;
int n,m,du[N],u[M],v[M];
double a[N],f[N][N],s[M],ans;
void init()
{
for(int i=;i<n;i++)f[i][i]=-;
f[][n+]=-;
// a[n]=1; //一条边不能从n点走回来!所以算边的时候n点应视为0!
for(int i=;i<=m;i++)
f[u[i]][v[i]]=1.0/du[v[i]],
f[v[i]][u[i]]=1.0/du[u[i]];
}
void gauss()
{
for(int i=;i<n;i++)
{
for(int j=n+;j>=i;j--)f[i][j]/=f[i][i];//要么倒序,要么另存!
for(int j=i+;j<n;j++)
for(int k=n+;k>=i;k--)
f[j][k]-=f[j][i]*f[i][k];
}
for(int i=n-;i;i--)
{
a[i]=f[i][n+];
for(int j=i-;j;j--)
f[j][n+]-=f[j][i]*a[i];
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
scanf("%d%d",&u[i],&v[i]);
du[u[i]]++;du[v[i]]++;
}
init();gauss();
// for(int i=1;i<=n;i++)
// printf("[%.3lf]",a[i]);printf("\n");
for(int i=;i<=m;i++)
s[i]=a[u[i]]/du[u[i]]+a[v[i]]/du[v[i]];
sort(s+,s+m+);
// for(int i=1;i<=m;i++)
// printf("(%.3lf)",s[i]);printf("\n");
for(int i=,j=m;i<=m;i++,j--)
ans+=s[i]*j;
printf("%.3lf",ans);
return ;
}
bzoj3143游走的更多相关文章
- 【Hnoi2013】Bzoj3143 游走
Position: http://www.lydsy.com/JudgeOnline/problem.php?id=3143 List Bzoj3143 Hnoi2013 游走 List Descri ...
- bzoj3143 游走
Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点, ...
- [HNOI2013][BZOJ3143] 游走 - 高斯消元
题目描述 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边 ...
- bzoj3143 游走 期望dp+高斯消元
题目传送门 题意: 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得 ...
- bzoj3143游走——期望+高斯消元
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3143 只需算出每条边被经过的概率,将概率从小到大排序,从大到小编号,就可得到最小期望: 每条 ...
- 【BZOJ3143】游走(高斯消元,数学期望)
[BZOJ3143]游走(高斯消元,数学期望) 题面 BZOJ 题解 首先,概率不会直接算... 所以来一个逼近法算概率 这样就可以求出每一条边的概率 随着走的步数的增多,答案越接近 (我卡到\(50 ...
- 【BZOJ3143】[Hnoi2013]游走 期望DP+高斯消元
[BZOJ3143][Hnoi2013]游走 Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 ...
- 【BZOJ3143】【HNOI2013】游走 && 【BZOJ3270】博物馆 【高斯消元+概率期望】
刚学完 高斯消元,我们来做几道题吧! T1:[BZOJ3143][HNOI2013]游走 Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小 ...
- 【BZOJ-3143】游走 高斯消元 + 概率期望
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2264 Solved: 987[Submit][Status] ...
随机推荐
- Vue学习笔记之Webpack介绍
在这里我仅仅的是对webpack做个讲解,webpack这个工具非常强大,解决了我们前端很繁琐的一些工具流程繁琐的事情.如果感兴趣的同学,简易还是看官网吧. 中文链接地址:https://www.we ...
- 20145315 《Java程序设计》第八周学习总结
20145315 <Java程序设计>第八周学习总结 教材学习内容总结 第十五章通用API 15.1日志 15.1.1日志API简介 使用日志的起点是logger类,logger实例的创建 ...
- cygwin安装方法
一.环境 OS:windows 二.安装cygwin以及各类cygwin下的软件 2.1 从官网http://www.cygwin.com/获取最新的版本 2.2 安装过程如下图
- 【乱码】运行java -jar xx.jar存到hbase里的数据乱码
程序在Eclipse里运行没有问题,但是打成jar包之后写入hbase里的数据会有乱码,ES里正常 经过测试,运行命令里加上-Dfile.encoding=utf-8 就可以正常写入,但是cmd命令里 ...
- java虚拟机类加载
java虚拟机中类的加载 (JVM的大致结构图) 从发class文件到内存中的类,按先后顺序,需要经过加载,链接以及初始化三大步骤. java语言的类型可分为两大类:基本类型(primitive ty ...
- tenserflow models包的安装
1.下载 models包 https://github.com/tensorflow/models 2.将models包拷贝到本机Python包的安装地址即可,本机Python包的安装地址的查看方式可 ...
- npm package.json中的dependencies和devDependencies的区别
转载:http://www.cnblogs.com/jes_shaw/p/4497836.html 一个node package有两种依赖,一种是dependencies一种是devDependenc ...
- Django框架基于session的登录/注销实现
博主最近想基于Django框架开发一个测试平台,第一版先实现查看下载自动化的测试报告文件 第一步:前端框架 网上选择一款开源boostrap的前端框架 AdminLTE,这里给个链接 https:/ ...
- PistgreSQL9.6手册(基础摘录)
学习目的:基础使用. 能够开发RoR就行. git: https://github.com/postgres-cn/pgdoc-cn 1.2. 架构基础 PostgreSQL使用一种客户端/服务器的模 ...
- [转]Linux下彻底卸载mysql详解
http://www.jb51.net/article/97516.htm 一.使用以下命令查看当前安装mysql情况,查找以前是否装有mysql 1 rpm -qa|grep -i mysql 可以 ...