假如我们知道了每条边经过的期望次数,则变成了一个显然的贪心。现在考虑如何求期望次数。

由于走到每个点后各向等概率,很显然一条边的期望次数可以与它的两个端点的期望次数,转化为求点的期望次数

考虑每个点对另个点的贡献,得到方程组,暴力高斯消元

注意走到最后一个点就结束了,所以相当于它不能有出边

#include <bits/stdc++.h>
#define eps 1e-6
using namespace std; const int N = 1005; double a[N][N];
int n,m,d[N],g[N][N],t1,t2; bool gauss_jordan()
{
for(int i=1; i<=n; i++)
{
int r=i;
for(int j=i+1; j<=n; j++)
if(fabs(a[j][i])>fabs(a[r][i]))
r=j;
if(r-i)
for(int j=1; j<=n+1; j++)
swap(a[i][j],a[r][j]);
if(fabs(a[i][i])<eps)
return 0;
for(int j=1; j<=n; j++)
if(j-i)
{
double tmp=a[j][i]/a[i][i];
for(int k=i+1; k<=n+1; k++)
a[j][k]-=a[i][k]*tmp;
}
}
for(int i=1; i<=n; i++)
a[i][n+1]/=a[i][i];
return 1;
} vector <pair<int,int> > E;
double res[N*N]; int main()
{
ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=1;i<=m;i++) {
cin>>t1>>t2;
g[t1][t2]=1;
g[t2][t1]=1;
d[t1]++;
d[t2]++;
E.push_back(make_pair(t1,t2));
}
a[1][n+1]=1;
a[n][n]=1;
for(int i=1;i<n;i++) {
a[i][i]=1;
for(int j=1;j<=n;j++)
if(g[j][i])
a[i][j] -= 1.0/d[j];
}
gauss_jordan(); double ans = 0;
for(int i=0;i<m;i++)
res[i]=a[E[i].first][n+1]/d[E[i].first] + a[E[i].second][n+1]/d[E[i].second];
sort(res,res+m);
for(int i=0;i<m;i++) ans+=res[i]*(m-i);
printf("%.3f\n",ans);
}

[HNOI2013] 游走 - 概率期望,高斯消元,贪心的更多相关文章

  1. BZOJ.3143.[HNOI2013]游走(概率 期望 高斯消元)

    题目链接 参考 远航之曲 把走每条边的概率乘上分配的标号就是它的期望,所以我们肯定是把大的编号分配给走的概率最低的边. 我们只要计算出经过所有点的概率,就可以得出经过一条边(\(u->v\))的 ...

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

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

  3. 2018.09.23 bzoj3143: [Hnoi2013]游走(dp+高斯消元)

    传送门 显然只需要求出所有边被经过的期望次数,然后贪心把边权小的边定城大的编号. 所以如何求出所有边被经过的期望次数? 显然这只跟边连接的两个点有关. 于是我们只需要求出两个点被经过的期望次数. 对于 ...

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

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

  5. BZOJ 3143 Luogu P3232 [HNOI2013]游走 (DP、高斯消元)

    题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=3143 (luogu) https://www.luogu.org/pro ...

  6. [HNOI2011]XOR和路径 概率期望 高斯消元

    题面 题解:因为异或不太好处理,,,因此按位来算,这样最后的答案就是每一位上的值乘对应的权值再求和.本着期望要倒退的原则,,,我们设$f[i]$表示从$i$到$n$,xor和为1的概率.那么观察$xo ...

  7. luoguP4457 [BJOI2018]治疗之雨 概率期望 + 高斯消元

    应该是最后一道紫色的概率了....然而颜色啥也代表不了.... 首先看懂题意: 你现在有$p$点体力,你的体力上限为$n$ 在一轮中, 1.如果你的体力没有满,你有$\frac{1}{m + 1}$的 ...

  8. 4.23 子串 AC自动机 概率期望 高斯消元

    考虑40分. 设出状态 f[i]表示匹配到了i位还有多少期望长度能停止.可以发现这个状态有环 需要高斯消元. 提供一种比较简单的方法:由于期望的线性可加性 可以设状态f[i]表示由匹配到i到匹配到i+ ...

  9. BZOJ4820 SDOI2017硬币游戏(概率期望+高斯消元+kmp)

    容易想到的做法是建出AC自动机,高斯消元.然而自动机上节点数量是nm的. 注意到我们要求的变量只有n个,考虑将其他不用求的节点合并为一个变量.这个变量即表示随机生成一个串,其不包含任何一个模板串的概率 ...

随机推荐

  1. C# MVC 全局错误Application_Error中处理(包括Ajax请求)

    在MVC的Global.asax Application_Error 中处理全局错误. 如果在未到创建请求对象时报错,此时 Context.Handler == null . 判断为Ajax请求时,我 ...

  2. 用记事本编辑HTML文件后保存代码全堆在一起了,记事本打开html文件格式乱了

    经常会遇到这么一个现象,记事本打开编辑html代码,保存后格式就乱了,代码全部堆在一行了.遇到这种情况有时候也很无语 因为平常工作中也经常遇到这样的情况,后来通过研究,大概找到问题的所在. 我是这么一 ...

  3. Centos 7 配置 NFS

    安装NFS包 yum install nfs-utils.x86_64 启动NFS服务需要首先启动rpcbind服务,这个rpcbind包已经在上面安装好了 先配置 /etc/exports 文件 v ...

  4. PHP0008:PHP基础-数组

  5. C# DES加密、解密

    /// <summary> /// DES加密字符串 /// </summary> /// <param name="pToEncrypt">待 ...

  6. 修改Ubuntu的apt-get源为国内镜像源的方法

    1.原文件备份 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2.编辑源列表文件 sudo vim /etc/apt/sources. ...

  7. django orm介绍以及字段和参数

    Object Relational Mapping (ORM) orm介绍 orm概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数 ...

  8. centos系统mongodb安装

    使用腾讯云搭服务器时,需要链接数据库,就从头开始重新安装了一遍mongodb,没想到这么麻烦,记得之前没这么麻烦. 1.下载mongodb(一篇博客的) 安装的是3.6版本 `` vim /etc/y ...

  9. @Html.DropDownList 无法显示默认值问题

    1.查看下拉框的id名,是否和ViewBag变量名相同,如果相同的话,更改下拉框的id名字,使之和ViewBag变量名相同即可例如:@Html.DropDownList("List1&quo ...

  10. Nuxt服务端使用Axios调用接口时传递cookies

    个人博客 地址:http://www.wenhaofan.com/article/20190321183709 介绍 在做单点登录时,后端需要根据cookie获取登录用户,由于前端项目使用了Nuxt做 ...