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] ...
随机推荐
- [one day one question] iphone6 plus h5页面滑动莫名卡
问题描述: iphone6 plus h5页面滑动莫名卡,这怎么破? 解决方案: 比较奇葩的问题,在找不到任何问题的情况下,可以考虑在下发现的解决方案,html,body未添加height: 100% ...
- 20145315 《Java程序设计》第十周学习总结
20145315 <Java程序设计>第十周学习总结 教材学习内容总结 网络概述 为了能够方便的识别网络上的每个设备,网络中的每个设备都会有一个唯一的数字标识,这个就是IP地址.IP地址实 ...
- php+mysql 注入基本过程
当mysql版本>5.0时我们只需要访问information_schema库即可查询数据库的相关概要信息,而对于<5.0的版本则需要爆破,今天我们测试的环境是mysql 5.5.40,对 ...
- UVa 10491 奶牛和轿车(全概率公式)
https://vjudge.net/problem/UVA-10491 题意: 假设有a头牛,b辆车,在最终选择前主持人会替你打开c个有牛的门,输出"总是换门"的策略下,赢得车的 ...
- 一次由webview报错引起的追根溯源
最近客户端那边需要搞了个h5嵌入app,想想是移动端的webview,前端这边也比较忙.就没想太多,直接用了async/await处理api数据,于是就不怪测试就来搞事情了... 一.error: 1 ...
- (GoRails) Credential
之前的博客:https://www.cnblogs.com/chentianwei/p/9167489.html Guide: https://guides.rubyonrails.org/secu ...
- UVA-1612 Guess (贪心)
题目大意:考试共有三道题,n个人,每个人对每道题的可能得分已知,现在已知考后排名情况,问排名合不合理. 题目分析:贪心.贪心策略:每处理一个排名,都让他的得分尽量高. # include<ios ...
- call()与apply()用法
call()和apply()的作用都是一样的——通过改变函数体内部 this 的指向,借用对象的方法的目的 还是举个栗子吧: function Cat(){ this.food = 'fish'; t ...
- SpringMvc测试框架详解----服务端测试
随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的.从Spring 3.2开始Spring了Spring Web测试框架,如果版本低于3.2,请使用sp ...
- oracle增加sequence
(1)删除序列; (2)重新创建: 这个方法比较简单粗暴. drop sequence sequence_name; create sequence sequence_name minvalu ...