【LG3232】[HNOI2013]游走
题面
题解
代码
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
inline int gi() {
register int data = 0, w = 1;
register char ch = 0;
while (ch != '-' && (ch > '9' || ch < '0')) ch = getchar();
if (ch == '-') w = -1 , ch = getchar();
while (ch >= '0' && ch <= '9') data = data * 10 + (ch ^ 48), ch = getchar();
return w * data;
}
#define MAX_N 505
struct Edge {
int to, next;
} e[MAX_N * MAX_N << 1];
int fir[MAX_N], cnt = 0;
void clearGraph() {
memset(fir, -1, sizeof(fir));
cnt = 0;
}
void Add_Edge(int u, int v) {
e[cnt].to = v, e[cnt].next = fir[u], fir[u] = cnt++;
}
int N, M, d[MAX_N];
double A[MAX_N][MAX_N];
struct edg {
int u, v;
double P;
bool operator < (const edg & rhs) const {
return P < rhs.P;
}
} ed[MAX_N * MAX_N];
int main () {
clearGraph();
N = gi(), M = gi();
for (int i = 1; i <= M; i++) {
int u = gi(), v = gi();
Add_Edge(u, v);
Add_Edge(v, u);
d[u]++, d[v]++;
ed[i].u = u, ed[i].v = v;
}
for (int i = 1; i <= N; i++) A[i][i] = 1.0;
for (int x = 1; x < N; x++)
for (int i = fir[x]; ~i; i = e[i].next)
if (e[i].to != N) A[x][e[i].to] -= 1.0 / d[e[i].to];
A[1][N + 1] = 1;
for (int i = 1; i <= N; i++) {
int r = i;
for (int j = i + 1; j <= N; j++)
if (fabs(A[j][i]) > fabs(A[r][i])) r = j;
if (r != i)
for (int j = 1; j <= N + 1; j++) swap(A[r][j], A[i][j]);
for (int j = i + 1; j <= N; j++) {
double f = A[j][i] / A[i][i];
for (int k = i; k <= N + 1; k++) A[j][k] -= f * A[i][k];
}
}
for (int i = N; i >= 1; i--) {
for (int j = i + 1; j <= N; j++)
A[i][N + 1] -= A[j][N + 1] * A[i][j];
A[i][N + 1] /= A[i][i];
}
for (int i = 1; i <= M; i++) {
int u = ed[i].u, v = ed[i].v;
ed[i].P = 1.0 * A[u][N + 1] / d[u] + 1.0 * A[v][N + 1] / d[v];
}
sort(&ed[1], &ed[M + 1]);
double ans = 0;
for (int i = 1; i <= M; i++) ans += ed[i].P * (M - i + 1.0);
printf("%0.3lf\n", ans);
return 0;
}
【LG3232】[HNOI2013]游走的更多相关文章
- bzoj 3143: [Hnoi2013]游走 高斯消元
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1026 Solved: 448[Submit][Status] ...
- [补档][Hnoi2013]游走
[Hnoi2013]游走 题目 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一 ...
- [HNOI2011]XOR和路径 && [HNOI2013]游走
[HNOI2011]XOR和路径 题目大意 具体题目:戳我 题目: 给定一个n个点,m条边的有重边.有自环的无向图,其中每个边都有一个边权. 现在随机选择一条1到n的路径,路径权值为这条路径上所有边权 ...
- BZOJ_3143_[Hnoi2013]游走_期望DP+高斯消元
BZOJ_3143_[Hnoi2013]游走_期望DP+高斯消元 题意: 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机 ...
- P3232 [HNOI2013]游走 解题报告
P3232 [HNOI2013]游走 题目描述 一个无向连通图,顶点从\(1\)编号到\(N\),边从\(1\)编号到\(M\). 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概 ...
- [BZOJ3143][HNOI2013]游走(期望+高斯消元)
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3576 Solved: 1608[Submit][Status ...
- 【BZOJ3143】[Hnoi2013]游走 期望DP+高斯消元
[BZOJ3143][Hnoi2013]游走 Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 ...
- bzoj 3143 [Hnoi2013]游走 期望dp+高斯消元
[Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3394 Solved: 1493[Submit][Status][Disc ...
- BZOJ3141 Hnoi2013 游走 【概率DP】【高斯消元】*
BZOJ3141 Hnoi2013 Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点 ...
- BZOJ 3143 HNOI2013 游走 高斯消元 期望
这道题是我第一次使用高斯消元解决期望类的问题,首发A了,感觉爽爽的.... 不过笔者在做完后发现了一些问题,在原文的后面进行了说明. 中文题目,就不翻大意了,直接给原题: 一个无向连通图,顶点从1编号 ...
随机推荐
- 使用python编写svn钩子
同上一篇trac中安装插件的文章的出发点一样,感觉用文档和口头制定规则在执行上会有偏差并且需要经常引导新人去熟悉规则. 所以,又费了几个小时去琢磨怎么改进svn提交代码的钩子,现有的钩子的功能比较简单 ...
- Kali-linux使用Metasploitable操作系统
Metasploitable是一款基于Ubuntu Linux的操作系统.该系统是一个虚拟机文件,从http://sourceforge.net/projects/metasploitable/fil ...
- linux内存管理--用户空间和内核空间
关于虚拟内存有三点需要注意: 4G的进程地址空间被人为的分为两个部分--用户空间与内核空间.用户空间从0到3G(0xc0000000),内核空间占据3G到4G.用户进程通常情况下只能访问用户空间的虚拟 ...
- 小程序的get和post需要注意的地方
在进行异步请求之前先去小程序后台配置好服务器域名. get请求:header: { 'content-type':'json'}就可以. post请求:header: { 'content-type' ...
- vue.js数组追加合并与对象追加合并的
今天在做懒加载的时候遇到的问题,在网上搜索找到的答案不是很清晰,就来写一下,方便以后使用. 直接上图吧 官方连接:https://cn.vuejs.org/v2/guide/reactivity.ht ...
- Token生成(转载)
package main import ( "encoding/base64" "encoding/json" "log" "ne ...
- multiprocessing进程开发RuntimeError
windows环境下multiprocessing报如下异常信息: RuntimeError: An attempt has been made to start a new process befo ...
- JS基础——事件操作总结
通用事件绑定 function bindEvent(elem,type,fn) { elem.addEventListener(type,fn); } let a =document.getEle ...
- 关于2018年第九届蓝桥杯[C++省赛B组][第四题:测试次数]的疑问
题目来源:https://blog.csdn.net/qq_34202873/article/details/79784548 #标题:测试次数#x星球的居民脾气不太好,但好在他们生气的时候唯一的异常 ...
- 嵌入式STM32开发环境之Keil5的安装(附资源)--
全文copy,原文见https://blog.csdn.net/weixin_42602730/article/details/81007685 --------------------------- ...