[BZOJ3143][HNOI2013]游走
2016-03-24 20:08
309 查看
不得不说确实是一道一眼题啊,设p[i]p[i]表示经过ii点的期望。
p[i]=p[j]/deg[j]+[i==1],i→jp[i]=p[j]/deg[j]+[i==1],i\rightarrow j,高斯消元即可。
每一条边期望经过的次数为p[i]/deg[i]+p[j]/deg[j]p[i]/deg[i]+p[j]/deg[j],贪心即可。
然而高斯消元有细节要注意,不然会WA。
p[i]=p[j]/deg[j]+[i==1],i→jp[i]=p[j]/deg[j]+[i==1],i\rightarrow j,高斯消元即可。
每一条边期望经过的次数为p[i]/deg[i]+p[j]/deg[j]p[i]/deg[i]+p[j]/deg[j],贪心即可。
然而高斯消元有细节要注意,不然会WA。
#include<cstdio> #include<cstdlib> #include<algorithm> #include<iostream> #include<cmath> #define DB double using namespace std; const int MAXN=502; int map[MAXN][MAXN],deg[MAXN],n,m; DB g[MAXN][MAXN],val[MAXN*MAXN]; void gause() { for(int i=1;i<=n-1;i++) { int r=i; for(int j=i+1;j<=n-1;j++) if(fabs(g[j][i])>fabs(g[r][i]))r=j; if(r!=i) for(int j=1;j<=n-1;j++) swap(g[i][j],g[r][j]); for(int j=i+1;j<=n-1;j++) { { DB f=g[j][i]/g[i][i];//!!! for(int k=i;k<=n;k++) g[j][k]-=f*g[i][k]; } } } for(int i=n-1;i>=1;i--) { DB sum=0; for(int j=i+1;j<=n-1;j++) sum+=g[i][j]*g[j] ; g[i] -=sum; g[i] /=g[i][i]; g[i][i]=1; } } int main() { #ifndef ONLINE_JUDGE freopen("walk.in","r",stdin); freopen("walk.out","w",stdout); #endif scanf("%d %d",&n,&m); for(int i=1;i<=m;i++) { int x,y; scanf("%d %d",&x,&y); map[x][y]=map[y][x]=1; deg[x]++,deg[y]++; } for(int i=1;i<n;i++) { if(i==1)g[i] =1; g[i][i]=1; for(int j=1;j<n;j++) { if(j==i)continue; g[i][j]=-(DB)map[i][j]*1.0/deg[j]; } } gause(); int tot=0; for(int i=1;i<=n;i++) { for(int j=i+1;j<=n;j++) if(map[i][j]) val[tot++]=g[i] /deg[i]+g[j] /deg[j]; } sort(val,val+tot); DB ans=0; int k=tot; for(int i=0;i<tot;i++) { ans+=val[i]*k; k--; } printf("%.3lf\n",ans); }
相关文章推荐
- java基础入门-arraylist存储开销
- ORA-12545: 因目标主机或对象不存在,连接失败
- Activity与Fragment的生命周期
- BZOJ4454: C Language Practice
- vijos P1213 80人环游世界(有源汇的上下界费用流)
- 【JAVA开发之IO流1-2】IO流中的字符流和字节流
- JAVA多线程之基础部分
- VMware虚拟机无法识别U盘解决方案
- 探讨理想团队模式
- systemctl介绍
- Java 设计模式-单例模式
- PKU离散数学
- MyEclipse------如何查询MySQL数据库里面表的信息
- 移动app应用程序开发的个人经验之谈
- TextView 文本过长时自动打点
- 【HPU】[1733]神奇的数字9
- 关于CSS中的float和position (父容器div内的子元素div为float时,父元素无法撑开(或高度自适应)的解决方式)
- 软考信息系统监理师2016年3月18日作业
- Spring Batch 之 Sample(Hello World)(三)
- Centos 6.5 安装Nagios监控服务端与客户端