#数学期望,高斯消元#洛谷 3232 [HNOI2013]游走
分析
如果计算出边的期望经过次数那就可以算出来答案
首先转换成点的期望经过次数,设\(dp[x]\)表示点\(x\)的期望经过次数
那么\(dp[x]=\sum_{y\in son}\frac{dp[y]}{deg[x]}+(x==1)(1\leq x<n)\)
可以用高斯消元解决,那么边的期望经过次数就是\(\frac{dp[u]}{deg[u]}+\frac{dp[v]}{deg[v]}\)
将其排个序就可以确定边的编号了
代码
#include <cstdio>
#include <cctype>
#include <cmath>
#include <algorithm>
#define rr register
using namespace std;
const int N=511;
struct node{int y,next;}e[N*N];
double a[N][N],f[N*N],ans;
int n,m,k,deg[N],ls[N];
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline void add(int x,int y){
e[++k]=(node){y,ls[x]},ls[x]=k,
e[++k]=(node){x,ls[y]},ls[y]=k;
}
inline void Gauss(int n){
for (rr int i=1;i<=n;++i){
rr int p=i;
for (rr int j=i+1;j<=n;++j)
if (fabs(a[j][i])>fabs(a[p][i])) p=j;
if (p!=i) for (rr int j=1;j<=n+1;++j) swap(a[i][j],a[p][j]);
for (rr int j=1;j<=n;++j)
if (i!=j){
rr double elim=a[j][i]/a[i][i];
for (rr int k=i;k<=n+1;++k)
a[j][k]-=elim*a[i][k];
}
}
}
signed main(){
n=iut(),m=iut(),k=1;
for (rr int i=1,x,y;i<=m;++i)
++deg[x=iut()],++deg[y=iut()],add(x,y);
for (rr int i=1;i<n;++i){
a[i][i]=1.0;
for (rr int j=ls[i];j;j=e[j].next)
if (e[j].y!=n) a[i][e[j].y]=-1.0/deg[e[j].y];
}
a[1][n]=1,Gauss(n-1);
for (rr int i=1;i<n;++i)
for (rr int j=ls[i];j;j=e[j].next)
if (e[j].y!=n) f[j>>1]+=a[e[j].y][n]/a[e[j].y][e[j].y]*(1.0/deg[e[j].y]);
else f[j>>1]+=a[i][n]/a[i][i]*(1.0/deg[i]);
sort(f+1,f+1+m);
for (rr int i=1;i<=m;++i) ans+=((m-i+1)*1.0)*f[i];
return !printf("%.3f\n",ans);
}
#数学期望,高斯消元#洛谷 3232 [HNOI2013]游走的更多相关文章
- 洛谷P3232 [HNOI2013]游走(高斯消元+期望)
传送门 所以说我讨厌数学……期望不会高斯消元也不会……好不容易抄好了高斯消元板子被精度卡成琪露诺了…… 首先,我们先算出走每一条边的期望次数,那么为了最小化期望,就让大的期望次数乘上小编号 边的期望次 ...
- UVa 10828 Back to Kernighan-Ritchie (数学期望 + 高斯消元)
题意:给定一个 n 个结点的有向图,然后从 1 结点出发,从每个结点向每个后继结点的概率是相同的,当走到一个没有后继结点后,那么程序终止,然后问你经过每个结点的期望是次数是多少. 析:假设 i 结点的 ...
- P4321-随机漫游【状压dp,数学期望,高斯消元】
正题 题目链接:https://www.luogu.com.cn/problem/P4321 题目大意 给出\(n\)个点\(m\)条边的一张无向图,\(q\)次询问. 每次询问给出一个点集和一个起点 ...
- 洛谷P3232[HNOI2013]游走
有一个无向简单连通图,顶点从 \(1\) 编号到 \(n\),边从 \(1\) 编号到 \(m\) 小Z在该图上进行随机游走,初始时小Z在\(1\)号顶点,每一步小Z以相等的概率随机选 择当前顶点的某 ...
- [bzoj3143] [洛谷P3232] [HNOI2013] 游走
Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点, ...
- 洛谷 P3232 [HNOI2013]游走
链接: P3232 题意: 和上次考试 T4 的简化且无修改一样,经典图上高斯消元求期望. 分析: 要求出每个点的期望出发次数 \(f_i\),每个点度数为 \(d_i\),有 \[f1=\sum\d ...
- BZOJ 3143 游走 | 数学期望 高斯消元
啊 我永远喜欢期望题 BZOJ 3143 游走 题意 有一个n个点m条边的无向联通图,每条边按1~m编号,从1号点出发,每次随机选择与当前点相连的一条边,走到这条边的另一个端点,一旦走到n号节点就停下 ...
- 【BZOJ】3143: [Hnoi2013]游走 期望+高斯消元
[题意]给定n个点m条边的无向连通图,每条路径的代价是其编号大小,每个点等概率往周围走,要求给所有边编号,使得从1到n的期望总分最小(求该总分).n<=500. [算法]期望+高斯消元 [题解] ...
- 【BZOJ】2337: [HNOI2011]XOR和路径 期望+高斯消元
[题意]给定n个点m条边的带边权无向连通图(有重边和自环),在每个点随机向周围走一步,求1到n的期望路径异或值.n<=100,wi<=10^9. [算法]期望+高斯消元 [题解]首先异或不 ...
- [BZOJ3143][HNOI2013]游走(期望+高斯消元)
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3576 Solved: 1608[Submit][Status ...
随机推荐
- Vue3学习(十八) - TreeSelect 树选择
写在前面 本以为可以在家学习一天,结果家里来了客人拜年,就没学习上,有点小遗憾吧. 昨天完成从分类管理的前后端代码复制出文档管理的前后端代码,遗留问题是只能选择一级父分类.值得说的是,昨晚的遗留的问题 ...
- Springboot集成Disruptor做内部消息队列
一.基本介绍 Disruptor的github主页:https://github.com/LMAX-Exchange/disruptor 1,什么是 Disruptor? (1)Disruptor 是 ...
- 文心一言 VS 讯飞星火 VS chatgpt (202)-- 算法导论15.3 1题
一.对于矩阵链乘法问题,下面两种确定最优代价的方法哪种更高效?第一种方法是穷举所有可能的括号化方案,对每种方案计算乘法运算次数,第二种方法是运行RECURSIVE-MATRIX-CHAIN.证明你的结 ...
- 硬件开发笔记(十二):RK3568底板电路电源模块和RTC模块原理图分析
前言 做硬件做系统做驱动,很难从核心板做起,所以我们先依赖核心板,分析底板周围的电路,然后使用AD绘制原理图和设计PCB,打样我司测试底板,完成硬件测试,再继续系统适配,驱动移植,从而一步一步完善 ...
- 【Azure 应用服务】使用Docker Compose创建App Service遇见"Linux Version is too long. It cannot be more than 4000 characters"错误
问题描述 使用Docker Compose方式合并多个镜像(Images)文件,然后部署到App Service中,结果失败.报错 Linux Version 太长,不能超过4000个字符. 错误消息 ...
- 【Azure 应用服务】App Services 恶意软件防护相关
问题描述 App Services 恶意软件防护相关资料,App Service是否默认开启病毒防护呢? 问题解答 App Services 默认启用了Antimalware 软件功能,Microso ...
- 【Azure Developer】Python代码获取的Token出现'Authentication_MissingOrMalformed'问题
问题描述 Python 调用Azure AD中所注册的应用生成Token代码: import requests, json client_id = 'yourclientid' client_secr ...
- CSP 2023 My Codes
T1 小苹果 题目描述 小 Y 的桌子上放着 \(n\) 个苹果从左到右排成一列,编号为从 \(1\) 到 \(n\). 小苞是小 Y 的好朋友,每天她都会从中拿走一些苹果. 每天在拿的时候,小苞都是 ...
- Nacos服务跨分组调用
一. 问题背景 nacos有两种服务隔离的机制,一个是空间namespace,一般我们用namespace区分环境,另外一个是分组group,nacos的默认调用机制是同namespace下的同gro ...
- 添加 alt + d 打开 dicts.cn 网址
代码 autohotkey 代码 限制在双核浏览器 内部使用 #IfWinActive ahk_exe ChromeCore.exe !d:: Run, http://www.dicts.cn/ Re ...