传送门

显然只需要求出所有边被经过的期望次数,然后贪心把边权小的边定城大的编号。

所以如何求出所有边被经过的期望次数?

显然这只跟边连接的两个点有关。

于是我们只需要求出两个点被经过的期望次数。

对于一个点uuu,它被经过的期望次数f[u]=∑vf[v]/du[v]f[u]=\sum _v f[v]/du[v]f[u]=∑v​f[v]/du[v]

这是一个环上的递推式,我们可以用高斯消元解方程组。

代码:

#include<bits/stdc++.h>
#define N 505
#define M 250005
using namespace std;
int n,m,du[N];
double matrix[N][N],f[N],ans=0.0;
bool tran[N][N];
struct edge{int u,v;double w;}e[M];
inline bool cmp(edge a,edge b){return a.w<b.w;}
inline void guass(int n){
	for(int i=1;i<=n;++i){
		int tmp=i;
		for(int j=i+1;j<=n;++j)if(fabs(matrix[j][i])>fabs(matrix[tmp][i]))tmp=j;
		if(tmp^i)swap(matrix[i],matrix[tmp]);
		for(int j=i+1;j<=n;++j){
			double ttmp=matrix[j][i]/matrix[i][i];
			for(int k=i;k<=n+1;++k)matrix[j][k]-=matrix[i][k]*ttmp;
		}
	}
	for(int i=n;i;--i){
		for(int j=i+1;j<=n;++j)matrix[i][n+1]-=matrix[i][j]*f[j];
		f[i]=matrix[i][n+1]/matrix[i][i];
	}
}
inline int read(){
	int ans=0;
	char ch=getchar();
	while(!isdigit(ch))ch=getchar();
	while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
	return ans;
}
int main(){
	n=read(),m=read();
	for(int i=1;i<=m;++i){
		++du[e[i].u=read()],++du[e[i].v=read()];
		tran[e[i].u][e[i].v]=tran[e[i].v][e[i].u]=true;
	}
	matrix[1][n]=1;
	for(int i=1;i<=n;++i)matrix[i][i]=1;
	for(int i=1;i<n;++i)for(int j=1;j<n;++j)if(tran[i][j])matrix[i][j]=-1.0/du[j];
	guass(n-1);
	for(int i=1;i<=m;++i)e[i].w=f[e[i].u]/du[e[i].u]+f[e[i].v]/du[e[i].v];
	sort(e+1,e+m+1,cmp);
	for(int i=1;i<=m;++i)ans+=e[i].w*(m-i+1);
	printf("%.3lf",ans);
	return 0;
}

2018.09.23 bzoj3143: [Hnoi2013]游走(dp+高斯消元)的更多相关文章

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

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

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

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

  3. 【BZOJ3143】游走(高斯消元,数学期望)

    [BZOJ3143]游走(高斯消元,数学期望) 题面 BZOJ 题解 首先,概率不会直接算... 所以来一个逼近法算概率 这样就可以求出每一条边的概率 随着走的步数的增多,答案越接近 (我卡到\(50 ...

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

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

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

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

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

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

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

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

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

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

  9. LOJ 2542 「PKUWC2018」随机游走 ——树上高斯消元(期望DP)+最值反演+fmt

    题目:https://loj.ac/problem/2542 可以最值反演.注意 min 不是独立地算从根走到每个点的最小值,在点集里取 min ,而是整体来看,“从根开始走到点集中的任意一个点就停下 ...

随机推荐

  1. leetcode27

    public class Solution { public int RemoveElement(int[] nums, int val) { var len = nums.Length; ; ; i ...

  2. VBA 定义能返回数组公式的自定义函数

    返回一个变量大小结果数组的方法 此方法返回基于一个参数范围的值的数组.结果数组的大小具体取决于参数数组中的元素数量波动.例如对于假定您要创建一个范围中的每个值乘以 100 的函数.下面的自定义函数接受 ...

  3. onMouseDown和onPress的差异AS2

    為了要做出比Button物件更複雜的互動,我們通常會改用MovieClip來製作按鈕.如此一來,就需要處理event handler.與滑鼠有關的MovieClip event handler包括on ...

  4. 根据img的url 判断img的图片大小

    // 图片地址 后面加时间戳是为了避免缓存 var img_url = 'http://www.qttc.net/static/upload/2013/13643608813441.jpg?'+Dat ...

  5. Haskell语言学习笔记(34)System.Environment

    System.Environment getArgs :: IO [String] getProgName :: IO String getExecutablePath :: IO FilePath ...

  6. libUpnp缓冲区溢出、拒绝服务等漏洞分析

    该漏洞存在于UPnP™设备的便携式SDK中,也叫做 libupnp.这个库是用来实现媒体播放(DLAN)或者NAT地址转换(UPnP IGD).智能手机上的应用程序可用这些功能播放媒体文件或者利用用户 ...

  7. hibernate 1对1的关系

    hibernate 中1对1的关系分为外键关联和主键关联 外键关联: //多方 public class Students {                                     ...

  8. 自然对数e(转)

    e表示增长的极限 e=limx→+∞ (1+1/x)^x≍2.71828 假设,一根竹子,第一天是1米,第二天长了1米,然后这根柱子的长度变成了2米.相当于 (1+1/1)^1.上面这个假设,如果仔细 ...

  9. Haddop SHUTDOWN_MSG: Shutting down NameNode at java.net.UnknownHostException: process01: process01: unknown error

    SHUTDOWN_MSG: Shutting down NameNode at java.net.UnknownHostException: process01: process01: unknown ...

  10. tomcat发布webservice

    编写后台代码: package test; import javax.jws.WebParam; import javax.jws.WebService; @WebService public cla ...