首先高斯消元解出每个点被走到的概率

注意到这里走到$n$就停下来了,所以$P(n) = 0$

解出来以后,给每条边$(u, v)$赋边权$P(u) + P(v)$即可,然后直接贪心

 /**************************************************************
Problem: 3143
User: rausen
Language: C++
Result: Accepted
Time:680 ms
Memory:6792 kb
****************************************************************/ #include <cstdio>
#include <cmath>
#include <algorithm> using namespace std;
typedef double lf;
const int N = ;
const int M = N * N;
const lf eps = 1e-; int read(); int n, m, tot;
int deg[N];
lf a[N][N], ans[N], w[M];
lf Ans; struct edge {
int x, y;
} E[M]; inline void Add_Edges(int x, int y) {
E[++tot].x = x, E[tot].y = y;
a[x][y] = a[y][x] = -1.0;
++deg[x], ++deg[y];
} void gauss(int n) {
int i, j, k;
lf tmp;
for (i = ; i <= n; ++i) {
for (k = i, j = i + ; j <= n; ++j)
if (fabs(a[j][i]) > fabs(a[k][i])) k = j;
if (fabs(a[k][i]) < eps) continue;
for (j = i; j <= n + ; ++j) swap(a[i][j], a[k][j]);
for (k = i + ; k <= n; ++k)
for (tmp = -a[k][i] / a[i][i], j = i; j <= n + ; ++j)
a[k][j] += a[i][j] * tmp;
}
for (i = n; i; --i) {
for (j = i + ; j <= n; ++j)
a[i][n + ] -= a[i][j] * ans[j];
ans[i] = a[i][n + ] / a[i][i];
}
} int main() {
int i, j;
n = read(), m = read();
for (i = ; i <= m; ++i)
Add_Edges(read(), read());
for (i = ; i < n; ++i) {
for (j = ; j < n; ++j)
if (deg[j]) a[i][j] = a[i][j] / deg[j];
a[i][i] = , a[i][n] = ;
}
a[][n] = ;
gauss(n - );
for (i = ; i <= n; ++i)
if (deg[i]) ans[i] /= deg[i];
for (i = ; i <= m; ++i)
w[i] = ans[E[i].x] + ans[E[i].y];
sort(w + , w + m + );
for (i = ; i <= m; ++i) Ans += w[i] * (m - i + );
printf("%.3lf\n", Ans);
return ;
} inline int read() {
static int x;
static char ch;
x = , ch = getchar();
while (ch < '' || '' < ch)
ch = getchar();
while ('' <= ch && ch <= '') {
x = x * + ch - '';
ch = getchar();
}
return x;
}

BZOJ3143 [Hnoi2013]游走的更多相关文章

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

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

  2. BZOJ3143:[HNOI2013]游走(高斯消元)

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

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

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

  4. BZOJ3143: [Hnoi2013]游走(期望DP 高斯消元)

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3597  Solved: 1618[Submit][Status][Discuss] Descript ...

  5. bzoj千题计划290:bzoj3143: [Hnoi2013]游走

    http://www.lydsy.com/JudgeOnline/problem.php?id=3143 计算每条边经过的概率e[] 然后经过概率多的分配的编号大,经过概率少的分配的编号小 如何计算边 ...

  6. 【数学期望】【高斯消元】bzoj3143 [Hnoi2013]游走

    和hdu5955很像.也是注意从结点1出发,其概率要在方程左侧+1. 边的期望和点的期望之间转换巧妙 http://blog.csdn.net/thy_asdf/article/details/473 ...

  7. 2018.09.23 bzoj3143: [Hnoi2013]游走(dp+高斯消元)

    传送门 显然只需要求出所有边被经过的期望次数,然后贪心把边权小的边定城大的编号. 所以如何求出所有边被经过的期望次数? 显然这只跟边连接的两个点有关. 于是我们只需要求出两个点被经过的期望次数. 对于 ...

  8. bzoj3143: [Hnoi2013]游走(贪心+高斯消元)

    考虑让总期望最小,那么就是期望经过次数越多的边贪心地给它越小的编号. 怎么求每条边的期望经过次数呢?边不大好算,我们考虑计算每个点的期望经过次数f[x],那么一条边的期望经过次数就是f[x]/d[x] ...

  9. 【BZOJ3143】[Hnoi2013]游走 期望DP+高斯消元

    [BZOJ3143][Hnoi2013]游走 Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 ...

随机推荐

  1. Corn Fields——POJ3254状态压缩Dp

    Corn Fields Time Limit: 2000MS Memory Limit: 65536K Description Farmer John has purchased a lush new ...

  2. 利用opencv训练样本分类

    参考:http://www.cnblogs.com/easymind223/archive/2012/07/03/2574826.html http://www.tuicool.com/article ...

  3. vpsmate安装

    安装需求 操作系统:CentOS/Redhat 5.4 或 5.4 以上版本,32位或64位均可,推荐使用 CentOS 6.2 64位. 内存大小:运行时占用约 20MB 左右的服务器内存. 请使用 ...

  4. html热力图的操作(点击图片的不同位置操作不同的事件)适合说明文档

    页面核心代码 <div class="first_top"> <div class="back"> <img src=" ...

  5. Filter

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有 web资源:例如Jsp, Servlet, 静 ...

  6. The communication of Linux Server and Localtion

    当用Secure CRT远程登录服务器时,若建立本地与服务器间文件自由传输的机制,我们就可以实现远程办公.具体方法如下: 1. 确定远程服务器的IP.可以通过Secure CRT进行远程登录. 2.在 ...

  7. 如何自定义ReportDesigner的向导界面(WIN)

    https://www.devexpress.com/Support/Center/Example/Details/T140683

  8. Docker常见问题解决

    一.Docker中运行ubuntu容器,字体颜色太深导致无法看清 解决方案: 1. 利用dircolors命令,查看我们的系统当前的文件名称显示颜色的值,然后利用管道重定向到用户目录下的任意一个文件( ...

  9. Top命令 -转

    Windows下的任务管理器虽然不好用(个人更喜欢Process Explorer些),但也算方便,可以方便的查看进程,CPU,内存...也可以很容易的结束进程 没有图形化界面下的Linux,也有命令 ...

  10. Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider停住了

    2015.1.24进行了服务器的搬家,搬家后,更换了新的IP,导致新的IP访问以前IP的数据库服务无法成功Initializing connection provider: org.springfra ...