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

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

但是我们可以先把经过点的期望次数求出来: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. Java学习总结:12
  2. re2c编译选项的说明
  3. extjs重新激活grid_处理Extjs的gridpanel修改一条记录并重新加载store之后,已选项model的record并没有改变的问题...
  4. 注意.NET Core进行请求转发问题
  5. sql replace 双引号变单引号_sql-汇总、排序以及分析思路
  6. imap服务器appleimap.163.com没有响应,163smtp
  7. 2020各大网站rss订阅源地址_2020-20-18——DJANGO复习
  8. Ext JS 4倒计时:图形和图表
  9. struts2 s:file标签使用及文件上传例子
  10. badboy使用简介
  11. Unity 改变下载资源商店中资源默认路径的方法
  12. 开发对接微信卡包会员卡_微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)...
  13. 数位笔的笔芯磨损到什么程度需要更换?压感笔笔芯怎么更换?
  14. 音视频技术开发周刊 | 248
  15. Like What Y ou Like: Knowledge Distill via Neuron Selectivity Transfer(2017)------论文阅读笔记
  16. 湖北武汉劳务员培训劳务员的现场管理建筑七大员培训
  17. Micro SD 卡(TF卡) spi 模式实现方法
  18. mysql优化之query_cache_type的DEMAND参数介绍
  19. 记录微信小程序获取手机号报40029错误问题
  20. ANSYS Workbench18.0有限元仿真分析视频教程

热门文章

  1. 在 Linux 下打包命令 tar 和压缩命令 7z 的配合使用示例
  2. android中有哪些utils的作用,AndroidUtils
  3. 学维修电脑要多久_学厨师要多久才出师
  4. linux 进城 管道丢数据,linux – 使用命名管道与bash – 数据丢失的问题
  5. LeetCode 09. 回文数
  6. oracle11g支持xp吗_拔掉U盘前一定需要安全弹出吗?
  7. mysql触发器中case语句_一个很好的触发器例子(case when)
  8. autocad2014 菜单栏 闪退_AutoCAD2014闪退的原因与处理办法 1打开就闪退怎样办
  9. python代码可以内嵌在asp文件中_在IE中使用Python作为开发脚本(转)
  10. C语言和指针的本质是什么?技术大神给出答案