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] ...
随机推荐
- 【ORACLE】oracle数据库用户密码复杂度配置
-- 设置密码复杂度 SQL> @ /u01/app/oracle/product/11.2.0/db_1/rdbms/admin/utlpwdmg.sql -- 测试 SQL> alte ...
- 9、Dockerfile实战-Nginx
上一节我们详解Dockerfile之后,现在来进行实战.我们通过docker build来进行镜像制作. build有如下选项: [root@localhost ~a]# docker build - ...
- Jq_浏览器兼容性及其浏览器版本
JQuery 中用 方法 jQuery.browser 来判断浏览器,返回值可以为: safari opera msie mozilla. 当然有时候我们还需要区分版本 这就要用到 jQuery.br ...
- 学习笔记 | CDQ分治
目录 前言 啥是CDQ啊(它的基本思想) 例题 后记 参考博文 前言 博主太菜了 学习快一年的OI了 好像没有什么会的算法 更寒碜的是 学一样还不精一样TAT 如有什么错误请各位路过的大佬指出啊感谢! ...
- Centos6.5下进行PHP版本升级
http://blog.csdn.net/aliveqf/article/details/70444387
- python引入pytesseract报错:ValueError: Attempted relative import in non-package
http://blog.csdn.net/yifengfuxue/article/details/79015651
- C. Classy Numbers
链接 [http://codeforces.com/contest/1036/problem/C] 题意 给你l,r,让你找在这个闭区间内位数不为0不超过3的个数,1<=l,r<=1e18 ...
- 《Linux内核设计与实现》Chapter 1 读书笔记
<Linux内核设计与实现>Chapter 1 读书笔记 一.Unix的特点 Unix从Multics中产生,是一个强大.健壮和稳定的操作系统. 特点 1.很简洁 2.在Unix系统中,所 ...
- 第一Sprint阶段回复其他各组对我组提出的意见
组号 组名 组名 对我组提出的意见 对各组的回复 1 理财猫 1.虚拟机和手机端的交互是否能扩展到整个学校 2.每次都需要老师输入作业内容吗 3.操作过于繁琐 多谢你们的建议,老师可以选择输入 ...
- 第二个Sprint冲刺第六天(燃尽图)补