[HNOI2013] 游走 - 概率期望,高斯消元,贪心
假如我们知道了每条边经过的期望次数,则变成了一个显然的贪心。现在考虑如何求期望次数。
由于走到每个点后各向等概率,很显然一条边的期望次数可以与它的两个端点的期望次数,转化为求点的期望次数
考虑每个点对另个点的贡献,得到方程组,暴力高斯消元
注意走到最后一个点就结束了,所以相当于它不能有出边
#include <bits/stdc++.h>
#define eps 1e-6
using namespace std;
const int N = 1005;
double a[N][N];
int n,m,d[N],g[N][N],t1,t2;
bool gauss_jordan()
{
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[i][j],a[r][j]);
if(fabs(a[i][i])<eps)
return 0;
for(int j=1; j<=n; j++)
if(j-i)
{
double tmp=a[j][i]/a[i][i];
for(int k=i+1; k<=n+1; k++)
a[j][k]-=a[i][k]*tmp;
}
}
for(int i=1; i<=n; i++)
a[i][n+1]/=a[i][i];
return 1;
}
vector <pair<int,int> > E;
double res[N*N];
int main()
{
ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=1;i<=m;i++) {
cin>>t1>>t2;
g[t1][t2]=1;
g[t2][t1]=1;
d[t1]++;
d[t2]++;
E.push_back(make_pair(t1,t2));
}
a[1][n+1]=1;
a[n][n]=1;
for(int i=1;i<n;i++) {
a[i][i]=1;
for(int j=1;j<=n;j++)
if(g[j][i])
a[i][j] -= 1.0/d[j];
}
gauss_jordan();
double ans = 0;
for(int i=0;i<m;i++)
res[i]=a[E[i].first][n+1]/d[E[i].first] + a[E[i].second][n+1]/d[E[i].second];
sort(res,res+m);
for(int i=0;i<m;i++) ans+=res[i]*(m-i);
printf("%.3f\n",ans);
}
[HNOI2013] 游走 - 概率期望,高斯消元,贪心的更多相关文章
- BZOJ.3143.[HNOI2013]游走(概率 期望 高斯消元)
题目链接 参考 远航之曲 把走每条边的概率乘上分配的标号就是它的期望,所以我们肯定是把大的编号分配给走的概率最低的边. 我们只要计算出经过所有点的概率,就可以得出经过一条边(\(u->v\))的 ...
- BZOJ 3143: [Hnoi2013]游走 [概率DP 高斯消元]
一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边的编号的分 ...
- 2018.09.23 bzoj3143: [Hnoi2013]游走(dp+高斯消元)
传送门 显然只需要求出所有边被经过的期望次数,然后贪心把边权小的边定城大的编号. 所以如何求出所有边被经过的期望次数? 显然这只跟边连接的两个点有关. 于是我们只需要求出两个点被经过的期望次数. 对于 ...
- BZOJ 3143 游走 | 数学期望 高斯消元
啊 我永远喜欢期望题 BZOJ 3143 游走 题意 有一个n个点m条边的无向联通图,每条边按1~m编号,从1号点出发,每次随机选择与当前点相连的一条边,走到这条边的另一个端点,一旦走到n号节点就停下 ...
- BZOJ 3143 Luogu P3232 [HNOI2013]游走 (DP、高斯消元)
题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=3143 (luogu) https://www.luogu.org/pro ...
- [HNOI2011]XOR和路径 概率期望 高斯消元
题面 题解:因为异或不太好处理,,,因此按位来算,这样最后的答案就是每一位上的值乘对应的权值再求和.本着期望要倒退的原则,,,我们设$f[i]$表示从$i$到$n$,xor和为1的概率.那么观察$xo ...
- luoguP4457 [BJOI2018]治疗之雨 概率期望 + 高斯消元
应该是最后一道紫色的概率了....然而颜色啥也代表不了.... 首先看懂题意: 你现在有$p$点体力,你的体力上限为$n$ 在一轮中, 1.如果你的体力没有满,你有$\frac{1}{m + 1}$的 ...
- 4.23 子串 AC自动机 概率期望 高斯消元
考虑40分. 设出状态 f[i]表示匹配到了i位还有多少期望长度能停止.可以发现这个状态有环 需要高斯消元. 提供一种比较简单的方法:由于期望的线性可加性 可以设状态f[i]表示由匹配到i到匹配到i+ ...
- BZOJ4820 SDOI2017硬币游戏(概率期望+高斯消元+kmp)
容易想到的做法是建出AC自动机,高斯消元.然而自动机上节点数量是nm的. 注意到我们要求的变量只有n个,考虑将其他不用求的节点合并为一个变量.这个变量即表示随机生成一个串,其不包含任何一个模板串的概率 ...
随机推荐
- python 复习 day1
import timeimport json # 二:嵌套取值操作students_info=[['egon',18,['play',]],['alex',18,['play','sleep']]] ...
- linux find命令mtime/atime/ctime +n -n n 全网最正确的总结
1.man find 解释: find - search for files in a directory hierarchy,即:在目录下查找文件 2.按文件被修改的时间查询文件 命令格式: fin ...
- matplotlib制作图表数据
import matplotlib.pyplot as plt import matplotlib fig=plt.figure() labels=['陆地','海洋'] data=[29,71] p ...
- 破局AI落地难,数据标注行业需率先变革丨曼孚科技
2019年,国内人工智能领域的投融资热情大幅降低,相当数量的AI企业彻底消失在了历史的长河中,“人工智能寒潮已至”甚至成为行业年度热词. 与前几年创业与投资热情齐头并进的盛况相比,近段时间的AI行业 ...
- 转:Laravel 项目开发规范
文件介绍很好 值得细细看看 https://www.jianshu.com/p/e464a35e5ed2 https://learnku.com/docs/laravel-specification/ ...
- pygame 运行心理学问卷
import pygame import sys from pygame.locals import * # wait for keys to putdown def waitForKeys(keys ...
- windows密码抓取工具-mimikatz
前言 介绍一下windows的密码hash值的组成: Windows系统下的hash密码格式为:用户名称:RID:LM-HASH值:NT-HASH值,例如: Administrator::C8825D ...
- 5G PDCCH 协议
For downlink, a maximum of 16 HARQ processes per cell is supported by the UE. The number of processe ...
- ubuntu set up 5 - VIM
Edit ~/.vimrc source vimrc: :so ~/.vimrc 1. ctrl - left/right 切换tabs https://vim.fandom.com/wiki/Usi ...
- 推荐15款Google Chrome 插件
Google Chrome是由Google开发的免费网页浏览器.Chrome是化学元素“铬”的英文名称,过去也用Chrome称呼浏览器的外框.Chrome相应的开放源代码计划名为Chromium,而G ...