如果纯模拟,就会死循环,而随着循环每个点的期望会逼近一个值,高斯消元就通过列方正组求出这个值。

  1. #include<cstdio>
  2. #include<cctype>
  3. #include<cstring>
  4. #include<algorithm>
  5. using namespace std;
  6. const double eps=1e-9;
  7. bool vis[503];
  8. double f[503],a[503][503],ans[500*500];
  9. int N,M,cnt=0,du[503],a1[500*500],a2[500*500];
  10. double fabs(double x){return x>0?x:-x;}
  11. int getint(){char c;while (!isdigit(c=getchar()));int a=c-'0';while(isdigit(c=getchar()))a=a*10+c-'0';return a;}
  12. void prepare(){
  13. for(int i=1;i<=M;++i){
  14. a[a1[i]][a2[i]]+=1.0/du[a2[i]];
  15. a[a2[i]][a1[i]]+=1.0/du[a1[i]];
  16. }
  17. for(int i=1;i<=N;++i)a[N][i]=0;
  18. for(int i=1;i<N;++i)a[i][i]=-1.0;
  19. a[1][N+1]=-1.0;a[N][N]=1.0;
  20. }
  21. void swapp(double &x,double &y){double z=x;x=y;y=z;}
  22. void gauss(){
  23. for(int i=1;i<=N;++i){
  24. int now=i;
  25. for(int j=i+1;j<=N;++j)if(fabs(a[j][i])>fabs(a[now][i]))now=j;
  26. if (now!=i)for(int j=i;j<=N+1;++j)swapp(a[now][j],a[i][j]);
  27. for(int j=i+1;j<=N;++j){
  28. double t=a[j][i]/a[i][i];
  29. for(int k=i;k<=N+1;++k)a[j][k]-=t*a[i][k];
  30. }
  31. }
  32. for(int i=N;i>=1;--i){
  33. for(int j=N;j>i;--j){
  34. a[i][N+1]-=a[j][N+1]*a[i][j];
  35. }a[i][N+1]/=a[i][i];
  36. }
  37. }
  38. bool cmp(double a,double b){return a>b;}
  39. int main(){
  40. memset(a,0,sizeof(a));
  41. memset(du,0,sizeof(du));
  42. N=getint();M=getint();
  43. for(int i=1;i<=M;++i){
  44. a1[i]=getint();a2[i]=getint();
  45. du[a1[i]]++;du[a2[i]]++;
  46. }prepare();
  47. gauss();
  48. cnt=0;
  49. for(int i=1;i<=M;++i){
  50. ans[++cnt]=a[a1[i]][N+1]/du[a1[i]]+a[a2[i]][N+1]/du[a2[i]];
  51. }
  52. sort(ans+1,ans+M+1,cmp);
  53. double sa=0;
  54. for(int i=1;i<=M;++i) sa+=ans[i]*i*1.0;
  55. printf("%.3lf\n",sa);
  56. return 0;
  57. }

  这样就可以了

【BZOJ 3143】【Hnoi2013】游走 期望+高斯消元的更多相关文章

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

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

  2. bzoj 3143 [Hnoi2013]游走【高斯消元+dp】

    参考:http://blog.csdn.net/vmurder/article/details/44542575 和2337有点像 设点u的经过期望(还是概率啊我也分不清,以下都分不清)为\( x[u ...

  3. [BZOJ3143][HNOI2013]游走(期望+高斯消元)

    3143: [Hnoi2013]游走 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3576  Solved: 1608[Submit][Status ...

  4. [HNOI2013]游走 期望+高斯消元

    纪念首道期望题(虽说绿豆蛙的归宿才是,但是我打的深搜总觉得不正规). 我们求出每条边的期望经过次数,然后排序,经过多的序号小,经过少的序号大,这样就可以保证最后的值最小. 对于每一条边的期望经过次数, ...

  5. bzoj 3143 [Hnoi2013]游走 期望dp+高斯消元

    [Hnoi2013]游走 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3394  Solved: 1493[Submit][Status][Disc ...

  6. [luogu3232 HNOI2013] 游走 (高斯消元 期望)

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

  7. 洛谷P3232 [HNOI2013]游走(高斯消元+期望)

    传送门 所以说我讨厌数学……期望不会高斯消元也不会……好不容易抄好了高斯消元板子被精度卡成琪露诺了…… 首先,我们先算出走每一条边的期望次数,那么为了最小化期望,就让大的期望次数乘上小编号 边的期望次 ...

  8. BZOJ3143 [Hnoi2013]游走 【高斯消元】

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

  9. bzoj3143游走——期望+高斯消元

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3143 只需算出每条边被经过的概率,将概率从小到大排序,从大到小编号,就可得到最小期望: 每条 ...

随机推荐

  1. hdu1047 Integer Inquiry

    /* Integer Inquiry Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...

  2. iOS是怎么"绘画"的?

    什么是绘图引擎 如果您以前从事其它平台的图形/界面开发或者游戏开发,一定知道, 不管上层UI怎么呈现和响应, 底层必须有一个绘图引擎. iOS也不例外. 本文详细介绍了iOS Graphics的用法和 ...

  3. [cocos2dx]2.2到3.1(3.0)升级帮助

    摘要: cocos2dx 是一款优秀的多平台,专为2D游戏设计的引擎. 在活跃的开源社区的推进下, 越发稳定和强大. 2.x -> 3.x的更新幅度很大, 性能的提升和功能的丰富也非常明显. 但 ...

  4. [转载]ExtJs4 笔记(11) Ext.ListView、Ext.view.View 数据视图

    本篇介绍两个用来展示数据的容器控件,分别是Ext.ListView和Ext.view.View.Ext.ListView就是大名鼎鼎的 Ext GridPanel的前身,不过现在的Ext4已经将它整合 ...

  5. 合唱队形2 洛谷U5874

    题目背景 上次老师挑出来的(N-K)位同学很不高兴,于是他们准备自己组建合唱队形.他们请了kkk来帮忙. 题目描述 他们安排了一个动作——手拉着手唱一首歌(就是他们围成一个圈).如果有两个相邻的同学的 ...

  6. 发布资源到Asset Store

    导入unitypackage右上角没有图标? 每当导入从Asset Store下载的资源时,总会看到右侧有个ICON 而我们自己导出的*.unitypackage ,当我们再次导入时,在右侧就没有此图 ...

  7. java10-2 toString()方法

    public String toString():返回该对象的字符串表示. Integer类下的一个静态方法: public static String toHexString(int i):把一个整 ...

  8. jq 操作table

    转载于:http://www.jb51.net/article/34633.htm jquery获取table中的某行全部td的内容方法,需要的朋友可以参考一下   <table>< ...

  9. 设置linux账号的有效时间

    在linux系统中,默认创建的用户的有效期限都是永久的,但有时候,我们需要对某些用户的有效期限做个限定!比如:公司给客户开的ftp账号,用于客户下载新闻稿件的.这个账号是有时间限制的,因为是付费的.合 ...

  10. 10301 MySQL各个版本区别及下载

    参考:http://www.admin10000.com/document/62.html MySQL 的官网下载地址:http://www.mysql.com/downloads/ 在这个下载界面会 ...