求经过边的期望次数,然后边的编号相当于给期望一个系数,期望大到小给编号就好

假如可以强行改边为点高斯消元的话是很方便的,然而并不资瓷

但是我们可以先把经过点的期望次数求出来:f(u)=sigema((u,v)属于E且v!=n)v f(v)/du(v),特别的,f(1)在右边还要加上一个1

对于1条边而言,走过它的期望次数就是它两端的点相互给对方的贡献

所以g(k)=f(u)/du(u)(当u!=n时)+f(u)/du(u)(当v!=n时)

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;struct node
{int x,y,next;
}a[510000];int len,last[510];int du[510];
void ins(int x,int y)
{len++;a[len].x=x;a[len].y=y;a[len].next=last[x];last[x]=len;
}int n;
double qg[510][510],qc[510];
void gauss()
{for(int j=1;j<=n;j++){for(int i=j;i<=n;i++)if(fabs(qg[i][j])>1e-8){for(int k=1;k<=n;k++)swap(qg[i][k],qg[j][k]);swap(qc[i],qc[j]);break;}for(int i=1;i<=n;i++){if(i==j)continue;double rate=qg[i][j]/qg[j][j];for(int k=1;k<=n;k++)qg[i][k]-=qg[j][k]*rate;qc[i]-=qc[j]*rate;}}
}int glen;
double f[510],g[310000];
int main()
{int m,x,y;scanf("%d%d",&n,&m);len=0;memset(last,0,sizeof(last));memset(du,0,sizeof(du));for(int i=1;i<=m;i++){scanf("%d%d",&x,&y);ins(x,y),ins(y,x);du[x]++,du[y]++;}memset(qc,0,sizeof(qc));qc[1]=-1;for(x=1;x<=n;x++){qg[x][x]=-1;for(int k=last[x];k;k=a[k].next){y=a[k].y;if(y!=n)qg[x][y]=1.0/(double)du[y];}}gauss();for(int i=1;i<=n;i++)f[i]=qc[i]/qg[i][i];glen=0;for(int k=1;k<=len;k+=2){x=a[k].x,y=a[k].y;g[++glen]=0;if(x!=n)g[glen]+=f[x]/(double)du[x];if(y!=n)g[glen]+=f[y]/(double)du[y];}sort(g+1,g+glen+1);double ans=0;for(int i=1;i<=glen;i++)ans+=g[i]*(double)(glen-i+1);printf("%.3lf\n",ans);return 0;
}

转载于:https://www.cnblogs.com/AKCqhzdy/p/9882176.html

bzoj3143: [Hnoi2013]游走相关推荐

  1. [bzoj3143] [HNOI2013]游走

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

  2. bzoj千题计划290:bzoj3143: [Hnoi2013]游走

    http://www.lydsy.com/JudgeOnline/problem.php?id=3143 计算每条边经过的概率e[] 然后经过概率多的分配的编号大,经过概率少的分配的编号小 如何计算边 ...

  3. 线性代数五之高斯消元——[SDOI2010]外星千足虫,[HNOI2013]游走,[HNOI2011]XOR和路径,[hdu 4035]Maze

    多类型高斯消元杂题 [SDOI2010]外星千足虫 description solution code [HNOI2013]游走 description solution code [HNOI2011 ...

  4. bzoj 3143: [Hnoi2013]游走(高斯消元)

    3143: [Hnoi2013]游走 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 3171  Solved: 1390 [Submit][Stat ...

  5. BZOJ 3143: [Hnoi2013]游走 高斯消元 期望

    3143: [Hnoi2013]游走 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 3463  Solved: 1535 [Submit][Stat ...

  6. [BZOJ 3143][Hnoi2013]游走(高斯消元+期望)

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

  7. bzoj3143,P3232-[Hnoi2013]游走【数学期望,高斯消元,贪心】

    正题 题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3143 https://www.luogu.org/problem/P3232 题 ...

  8. 【BZOJ3143】游走,概率计算+高斯消元

    Time:2016.08.18 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 某条边的期望=该边的概率*编号 有一种贪心思路就是把边按照概率从大到小排序,然后从1-m赋值计算即可 ...

  9. 【BZOJ】3143: [Hnoi2013]游走 期望+高斯消元

    [题意]给定n个点m条边的无向连通图,每条路径的代价是其编号大小,每个点等概率往周围走,要求给所有边编号,使得从1到n的期望总分最小(求该总分).n<=500. [算法]期望+高斯消元 [题解] ...

最新文章

  1. 机器学习进阶-图像形态学操作-腐蚀操作 1.cv2.erode(进行腐蚀操作)
  2. 2020-11-19(栈帧)
  3. datagrid 小数点_EasyUI 解决 datagrid 中 NumberBox 限制小数位数后不能输入小数点问题...
  4. 我也发软件开发团队的思考(侧重点是人员)
  5. (计算机组成原理题目题型总结)第六章:总线
  6. 女神节快乐!世界上第一位程序员就是女神
  7. 用位运算将十进制转为二进制python_python 十进制与二进制以及位运算
  8. vue跨域/webpack跨域
  9. WIFI中的关键词,频率,频段,频宽,频带...你晕了没??.
  10. C语言equivalent用法,C语言相当于'setw'函数
  11. python爬取网站突破_python最强的代理池,突破IP的封锁爬取海量数据
  12. Office2010激活失败 错误码2503、2502解决方案
  13. python统计词频并进行可视化显示_python统计词频
  14. redis keys命令,生产环境慎用,最好屏蔽掉
  15. linux操作系统 第11章 linux系统管理
  16. 微信PC版重磅更新!2个困扰多年的大麻烦,这次终于解决了
  17. Matlab散点图进阶——矩阵气泡图
  18. sql牛客网题(摘选)
  19. 编写爬取糗事百科信息爬虫代码学习笔记
  20. cursor:pointer属性,鼠标经过或点击有小手样式

热门文章

  1. 互联网工程任务组(IETF)
  2. QPW 用户签到日志表(tf_user_signin_log)
  3. mysql event 日志_MySQL Event计划任务刷慢日志
  4. 计算机usb端口没反应,技术编辑教您电脑usb接口没反应怎么办
  5. 旋转散点图_聚类分析的结果如何用散点图展示出来?
  6. Java从键盘输入若干数_用java编程序:从键盘输入若干个整数,输出这些数中大于其平均值的数。...
  7. python回归预测例子_案例实战 | 逻辑回归实现客户流失预测(附Python代码与源数据)...
  8. 想学C语言?这些你一定要知道
  9. wps生成正态分布的随机数_量子计算与机器学习: 量子生成对抗网络QGAN
  10. php魔术变量的概念_PHP 魔术变量和魔术函数详解