期望\(DP\)入门题目。

关键思想:无向边的转移作为有向边考虑。其他的就是直接上全期望公式。由于这个题目不是有向无环图,所以需要高斯消元搞一搞。

设每个点的期望经过次数是\(g(x)\),那么有

\[g(u) = \sum_{v} \frac{1}{out(v)}*g(v)
\]

特殊的,我们认为点\(1\)有一个一定经过的入边,且不考虑点\(n\)的所有出边。

这个\(g\)很好做啊,我们高斯消元搞一搞就好了。那边的期望经过次数\(f(x)\)也就显而易见。

\[f(x) = \frac{g(u)}{out(u)} + \frac{g(v)}{out(v)}
\]

然后这个题就做完了。

#include <bits/stdc++.h>
using namespace std; const int N = 500 + 5; int n, m, u[N * N], v[N * N], out[N]; vector <int> G[N]; double ans, f[N * N], g[N], mat[N][N]; void gauss_jordan () {
for (int i = 1; i <= n; ++i) {
int besti = i;
for (int j = i; j <= n; ++j) {
if (fabs (mat[besti][i]) < fabs(mat[j][i])) {
besti = j;
}
}
if (i != besti) swap (mat[i], mat[besti]);
for (int j = 1; j <= n; ++j) {
if (i == j) continue;
double t = mat[j][i] / mat[i][i];
for (int k = i; k <= n + 1; ++k) {
mat[j][k] -= mat[i][k] * t;
}
}
}
for (int i = 1; i <= n; ++i) {
g[i] = mat[i][n + 1] / mat[i][i];
}
} int main () {
// freopen ("data.in", "r", stdin);
cin >> n >> m;
for (int i = 1; i <= m; ++i) {
cin >> u[i] >> v[i];
G[u[i]].push_back (v[i]); if (u[i] != n) out[u[i]]++;
G[v[i]].push_back (u[i]); if (v[i] != n) out[v[i]]++;
}
mat[1][n + 1] = 1;
for (int u = 1; u <= n; ++u) {
mat[u][u] = 1;
for (int i = 0; i < G[u].size (); ++i) {
int v = G[u][i];
if (v == n) {
mat[n][v] = -1.0 / out[v];
} else {
mat[u][v] = -1.0 / out[v];
}
}
}
gauss_jordan ();
for (int i = 1; i <= m; ++i) {
if (u[i] != n) f[i] += g[u[i]] / out[u[i]];
if (v[i] != n) f[i] += g[v[i]] / out[v[i]];
}
sort (f + 1, f + 1 + m);
for (int i = 1; i <= m; ++i) {
ans += (m - i + 1) * f[i];
}
cout << fixed << setprecision (3) << ans << endl;
}

最新文章

  1. C语言题目复习前7章重点程序
  2. zip文件jQuery工作地点选择城市代码
  3. 传阿里整合资源,进军O2O市场
  4. Integer to Roman(JAVA)
  5. [LeetCode][Python]Largest Number
  6. hadoop系列一:hadoop集群安装
  7. github的简单使用
  8. Java中需要知道的关键字
  9. SVN百度云服务器安装使用。
  10. javascript:控制一个元素高度始终等于浏览器高度
  11. AIX nfs简单说明
  12. flask——包含,继承,宏
  13. MSSQL在线文件还原脚本
  14. 20155318 Exp1 PC平台逆向破解(5)M
  15. 微信小程序 - template和include详细描述
  16. 国内maven仓库地址
  17. oracle package pragma SERIALLY_REUSABLE(编译指示 告诉PL/SQL 的运行时引擎,在数据引用之时不要保持包级数据。)
  18. ASP.NET MVC 数据库依赖缓存
  19. SpringCloud教程 | 第十一篇: docker部署spring cloud项目
  20. Mininet实验 基于Mininet测量路径的损耗率

热门文章

  1. RN 图片处理 resizeMode
  2. JVM配置参数解析
  3. Linux进程信号
  4. 【AMAD】salabim -- Python中进行离散事件模拟
  5. python基础之字典dict
  6. 解决pip安装第三方包编码错误:UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte....
  7. jmeter性能测试重要指标以及性能结果分析
  8. FTL2
  9. TCP三次握手笔记
  10. 大型软件公司.Net面试常见题(含答案)