[HNOI2013]游走 期望+高斯消元
纪念首道期望题(虽说绿豆蛙的归宿才是,但是我打的深搜总觉得不正规)。
我们求出每条边的期望经过次数,然后排序,经过多的序号小,经过少的序号大,这样就可以保证最后的值最小。
对于每一条边的期望经过次数,其实是从它起点和终点来的。设f[]为每个点经过的期望,out[]为每个点的出度
设一条边,起点为u,终点为v。那么它的期望经过次数为f[u]/out[u]+f[v]/out[v]
这样问题就转化为求每个点的期望经过次数了
f[1]=1+sigma(f[j]/out(j),j和1有边)
f[i]=sigma(f[j]/out(j),j和i有边) //i>=2
这是n个变量n个方程的方程组,高斯消元解方程组,O(n^3)
#include<iostream> #include<cstdlib> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; #define pos(i,a,b) for(int i=(a);i<=(b);i++) #define pos2(i,a,b) for(int i=(a);i>=(b);i--) #define N 510 int n,m; int read() { int su=0; char ch=getchar(); while(ch<'0'||ch>'9') ch=getchar(); while(ch<='9'&&ch>='0'){ su=su*10+ch-'0';ch=getchar(); } return su; } double out[N]; double a[N][N],b[N],x[N]; int lian[N][N]; void swap(double &xx,double &yy) { double temp; temp=xx; xx=yy; yy=temp; } void gauss(){ double t; int im,num=1; for(int k=1;k<n;k++,num++) { im=k; pos(i,k+1,n) if(fabs(a[i][k])>fabs(a[im][k])) im=i; if(im!=k){ pos(i,k,n) swap(a[num][i],a[im][i]); swap(b[num],b[im]); } if(!a[num][k]){ num--; continue; } pos(i,num+1,n){ if(!a[num][k]) continue; t=a[i][k]/a[num][k]; pos(j,k,n+1) a[i][j]-=t*a[k][j]; b[i]-=t*b[k]; } } pos2(i,n,1){ pos2(j,n,i+1) b[i]-=a[i][j]*x[j]; x[i]=b[i]/a[i][i]; } } struct qian{ int from,to; double e; }cun[N*N]; bool aaa(const qian &a,const qian &b){ return a.e<b.e; } double ans; int messi(){ freopen("walk.in","r",stdin); freopen("walk.out","w",stdout); n=read();m=read(); pos(i,1,m){ int x,y; x=read();y=read(); lian[x][y]=lian[y][x]=1; out[x]+=1.0;out[y]+=1.0; cun[i].from=x;cun[i].to=y; } out[n]=0.0; a[1][1]=-1.0; b[1]=-1.0; pos(i,2,n){ if(lian[i][1]==1&&out[i]){ a[1][i]=1.0/out[i]; } } pos(i,2,n){ a[i][i]=-1.0; pos(j,1,n){ if(j!=i&&lian[j][i]==1&&out[j]){ a[i][j]=1.0/out[j]; } } } gauss(); pos(i,1,m){ if(out[cun[i].from]!=0&&out[cun[i].to]!=0) cun[i].e=x[cun[i].from]/out[cun[i].from]+x[cun[i].to]/out[cun[i].to]; else{ if(out[cun[i].from]==0) cun[i].e=x[cun[i].to]/out[cun[i].to]; else cun[i].e=x[cun[i].from]/out[cun[i].from]; } } sort(cun+1,cun+m+1,aaa); pos(i,1,m){ ans+=cun[i].e*(double)(m-i+1); } printf("%0.3lf",ans); return 0; } int hallmeow=messi(); int main(){;}
[HNOI2013]游走 期望+高斯消元的更多相关文章
- [BZOJ3143][HNOI2013]游走(期望+高斯消元)
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3576 Solved: 1608[Submit][Status ...
- 【BZOJ】3143: [Hnoi2013]游走 期望+高斯消元
[题意]给定n个点m条边的无向连通图,每条路径的代价是其编号大小,每个点等概率往周围走,要求给所有边编号,使得从1到n的期望总分最小(求该总分).n<=500. [算法]期望+高斯消元 [题解] ...
- [luogu3232 HNOI2013] 游走 (高斯消元 期望)
传送门 题目描述 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等 ...
- 【BZOJ 3143】【Hnoi2013】游走 期望+高斯消元
如果纯模拟,就会死循环,而随着循环每个点的期望会逼近一个值,高斯消元就通过列方正组求出这个值. #include<cstdio> #include<cctype> #inclu ...
- 洛谷P3232 [HNOI2013]游走(高斯消元+期望)
传送门 所以说我讨厌数学……期望不会高斯消元也不会……好不容易抄好了高斯消元板子被精度卡成琪露诺了…… 首先,我们先算出走每一条边的期望次数,那么为了最小化期望,就让大的期望次数乘上小编号 边的期望次 ...
- BZOJ3143 [Hnoi2013]游走 【高斯消元】
题目 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边的编 ...
- bzoj3143游走——期望+高斯消元
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3143 只需算出每条边被经过的概率,将概率从小到大排序,从大到小编号,就可得到最小期望: 每条 ...
- bzoj 3143 [Hnoi2013]游走【高斯消元+dp】
参考:http://blog.csdn.net/vmurder/article/details/44542575 和2337有点像 设点u的经过期望(还是概率啊我也分不清,以下都分不清)为\( x[u ...
- 【BZOJ3143】游走(高斯消元,数学期望)
[BZOJ3143]游走(高斯消元,数学期望) 题面 BZOJ 题解 首先,概率不会直接算... 所以来一个逼近法算概率 这样就可以求出每一条边的概率 随着走的步数的增多,答案越接近 (我卡到\(50 ...
随机推荐
- java基础回顾(五)线程详解以及synchronized关键字
本文将从线程的使用方式.源码.synchronized关键字的使用方式和陷阱以及一些例子展开java线程和synchronized关键字的内容. 一.线程的概念 线程就是程序中单独顺序的流控制.线程本 ...
- 12.js如何将明文转为MD5
1.先下载MD5.JS 2.引入,使用hex_md5(str)即可
- 致命错误:mysql/cli 目录 #include "mysql/client_plugin.h"
居然说没有mysql.h这个文件,可是我确实安装了mysql了啊....... 原来是缺少libmysqlclient-dev,OK安装就是了 ubuntu下 : audo apt-get in ...
- 第二章:2.9 总结一下 Django
1. URLconf(URL configuration ) : 这个模块包含URL模式(正则表达式)到视图函数(view.py)的简单映射. 2. python 正则表达式: 解释: 通配符:r : ...
- Ant部署(linux)
1.下载 mkdir /opt/ant cd /opt/ant wget http://mirror.bit.edu.cn/apache//ant/binaries/apache-ant-1.9.4- ...
- Adobe系列软件下载地址
在前些上传的文章中已经讲了如何激活Adobe系列软件,在这放上Adobe系列软件下载地址: 1.Adobe After Effects 2017-14.0 32位下载地址: 链接:http://pan ...
- 关于Lumen / Laravel .env 文件中的环境变量是如何生效的
.env 文件包含默认环境变量,我们还可自定义其他任何有效的变量,并可通过 调用 env() 或 $_SERVER 或 $_ENV 来获取该变量.那么env()是如何加载到这些变量的呢?在Lume ...
- Asp.Net Core 中无法使用 ConfigurationManager.AppSettings
刚刚接触.net core ,准备把之前的一些技术常用工具先移植到.net Standard上面来, 方便以后使用,结果用到ConfigurationManager 的 AppSettings 就出现 ...
- gulp静态资源构建、压缩、版本号添加
公司移动端商城使用前后分离方案,前台nginx静态文件,js使用requirejs模式,使用gulp压缩添加版本号时发现问题, 问题1.在公共的js配置中,引用的路径是写死的,缓存会一直存在. 解决方 ...
- 代码托管SVN到Git迁移(使用小乌龟工具)
1.环境信息 Git Server 华为软件开发云 代码托管 SVN Server 本地SVN服务器 Windows Server2012 R2 本地主机 Win ...