bzoj千题计划290:bzoj3143: [Hnoi2013]游走
http://www.lydsy.com/JudgeOnline/problem.php?id=3143
计算每条边经过的概率e[]
然后经过概率多的分配的编号大,经过概率少的分配的编号小
如何计算边经过的概率?
假设我们知道点的经过的概率p[]
若边i连接u和v,那么e[i]=p[u]/d[u]+p[v]/d[v]
d表示点的度数
如何计算点的经过概率?
dp[i]=Σ dp[j]/d[j]
高斯消元求解
注意到达终点就不能再走了,所以高斯消元的系数中不涉及和终点有关的信息
注意起点1的方程是 dp[1]=1+Σ dp[j]/d[j]
- #include<cmath>
- #include<cstdio>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- #define N 503
- int tot;
- int front[N],to[N*N*],nxt[N*N*],from[N*N*];
- double d[N];
- double a[N][N];
- double e[N*N];
- void read(int &x)
- {
- x=; char c=getchar();
- while(!isdigit(c)) c=getchar();
- while(isdigit(c)) { x=x*+c-''; c=getchar(); }
- }
- void add(int u,int v)
- {
- to[++tot]=v; nxt[tot]=front[u]; front[u]=tot; from[tot]=u;
- to[++tot]=u; nxt[tot]=front[v]; front[v]=tot; from[tot]=v;
- }
- void gauss(int n)
- {
- int r; double t;
- for(int i=;i<n;++i)
- {
- r=i;
- for(int j=i+;j<n;++j)
- if(fabs(a[j][i])>fabs(a[r][i])) r=j;
- if(r!=i)
- for(int j=;j<=n;++j) swap(a[i][j],a[r][j]);
- for(int k=i+;k<n;++k)
- {
- t=a[k][i]/a[i][i];
- for(int j=i;j<=n;++j) a[k][j]-=t*a[i][j];
- }
- }
- for(int i=n-;i;--i)
- {
- for(int j=i+;j<n;++j) a[i][n]-=a[i][j]*a[j][n];
- a[i][n]/=a[i][i];
- }
- }
- int main()
- {
- int n,m;
- read(n); read(m);
- int u,v;
- for(int i=;i<=m;++i)
- {
- read(u); read(v);
- add(u,v);
- d[u]++; d[v]++;
- }
- for(int i=;i<n;++i)
- {
- a[i][i]=;
- for(int j=front[i];j;j=nxt[j])
- if(to[j]!=n) a[i][to[j]]-=/d[to[j]];
- }
- a[][n]=;
- gauss(n);
- int cnt=;
- for(int i=;i<=tot;i+=) e[++cnt]=a[from[i]][n]/d[from[i]]+a[to[i]][n]/d[to[i]];
- sort(e+,e+m+,greater<double>());
- double ans=;
- for(int i=;i<=m;++i) ans+=e[i]*i;
- printf("%.3lf",ans);
- }
bzoj千题计划290:bzoj3143: [Hnoi2013]游走的更多相关文章
- [BZOJ3143][HNOI2013]游走(期望+高斯消元)
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3576 Solved: 1608[Submit][Status ...
- bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...
- BZOJ3143: [Hnoi2013]游走(期望DP 高斯消元)
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3597 Solved: 1618[Submit][Status][Discuss] Descript ...
- BZOJ3143:[HNOI2013]游走(高斯消元)
Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点, ...
- BZOJ3143 [Hnoi2013]游走 【高斯消元】
题目 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边的编 ...
- bzoj千题计划142:bzoj3144: [Hnoi2013]切糕
http://www.lydsy.com/JudgeOnline/problem.php?id=3144 如果D=2 ,两个点,高度为4,建图如下 #include<queue> #inc ...
- bzoj千题计划295:bzoj3140: [Hnoi2013]消毒
http://www.lydsy.com/JudgeOnline/problem.php?id=3140 如果只有两维,那就是二分图最小点覆盖 现在是三维,但是a*b*c<=5000,说明最小的 ...
- bzoj千题计划294:bzoj3139: [Hnoi2013]比赛
http://www.lydsy.com/JudgeOnline/problem.php?id=3139 队伍的顺序不会影响结果 将队伍的得分情况作为状态,记忆化搜索 就是先搜索第一只队伍的得分情况, ...
- bzoj千题计划293:bzoj3142: [Hnoi2013]数列
http://www.lydsy.com/JudgeOnline/problem.php?id=3142 如果已知数列的差分数列a[1]~a[k-1] 那么这种差分方式对答案的贡献为 N-Σ a[i] ...
随机推荐
- C#字符串截取、获取当前电脑时间、判断输入日期对错 随手记
字符串截取:这个就当复习了,看意见就可以 //身份证生日截取 //Console.WriteLine("请输入18位身份证号:"); //string x = Console.Re ...
- SVN回退版本
执行svn up 命令 保证当前本地版本是最新的版本. svn up 执行svn log 命令,查看历史修改,确定需要回复的版本,如果想要对比2个不同版本的文件差异 可以使用命令 svn diff - ...
- docker教程——docker镜像打包上传
在开始使用URLOS进行docker应用开发之前,我们先来了解一下docker镜像的打包方法.首先,安装URLOS,安装完成之后,docker也随之安装到了主机里.执行以下命令安装URLOS: cur ...
- 【MOOC EXP】Linux内核分析实验五报告
程涵 原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 分析system_call中断处理过程 ...
- 修改servlet的模板代码
实际开发中,这些生成的代码和注释一般我们都用不到的,每次都要手工删除这些注释和代码,很麻烦.下面以MyEclipse 2014(其实版本通用的,都可以修改)为例进行说明如何修改Servlet的模板代码 ...
- Android开发环境的发展演变调研
Android开发环境的发展演变调研 前几年比较多的方法是用JDK+eclipse+ADT,该方法除了要配置JDK的路径之外, 还要在eclipse里面打开SDK Manage进行相应的操作.不过近两 ...
- NetFPGA Demo ——reference_nic_nf1_cml
NetFPGA Demo --reference_nic_nf1_cml 实验平台 OS:deepin 15.4 开发板:NetFPGA_1G_CML 实验过程 从NetFPGA-1G-CML从零开始 ...
- Win2019 preview 版本的安装过程
1. 加入 windows insider 协议 登录自己的账号 同意 insder 协议. 然后 https://www.microsoft.com/en-us/software-download/ ...
- [转帖]Kubernetes及容器编排的总体介绍【译】
Kubernetes及容器编排的总体介绍[译] 翻译自The New Stack<Kubernetes 生态环境>作者:JANAKIRAM MSV和 KRISHNAN SUBRAMANIA ...
- mysql 命令行快速将数据库转移到另一个服务器中(数据库备份还原)
想将A服务器中的数据库快速转移到B服务器中,一般是先从A服务器中备份下来,下载备份数据,还原到B服务器中.使用phpMyAdmin备份和还原针对数据量很小的情况下很方便,数据量大的话很容易中断失败. ...