Luogu3232 HNOI2013 游走 高斯消元、期望、贪心
这种无向图上从一个点乱走到另一个点的期望题目好几道与高斯消元有关
首先一个显然的贪心:期望经过次数越多,分配到的权值就要越小。
设$du_i$表示$i$的度,$f_i$表示点$i$的期望经过次数(我们认为经过表示需要从这个点走出去,所以$f_N=0$),考虑到一条边$(u,v)$经过次数的期望为$\frac{f_u}{du_u}+\frac{f_v}{du_v}$,我们只需要求出$f$数组就可以求出每一条边对应的期望经过次数了。
对于$f$数组,类似于$DP$,我们可以列出一系列式子:$f_u=\frac{1}{du_u}\sum\limits_{(u,v) \in e} f_v+[u==1]$(因为$1$号点是起点,所以需要$+1$),而$f_N=0$,也就是有$N$个未知数、$N$个方程,那么我们可以通过高斯消元得到每一个$f_u$,然后这道题就做完了qaq
- #include<bits/stdc++.h>
- #define ld long double
- #define eps 1e-10
- //This code is written by Itst
- using namespace std;
- inline int read(){
- ;
- ;
- char c = getchar();
- while(c != EOF && !isdigit(c)){
- if(c == '-')
- f = ;
- c = getchar();
- }
- while(c != EOF && isdigit(c)){
- a = (a << ) + (a << ) + (c ^ ');
- c = getchar();
- }
- return f ? -a : a;
- }
- ;
- ld gauss[MAXN][MAXN] , now[MAXN * MAXN] , ans;
- struct Edge{
- int end , upEd;
- }Ed[MAXN * MAXN * ];
- int N , M , cntEd , du[MAXN] , head[MAXN];
- inline void addEd(int a , int b){
- Ed[++cntEd].end = b;
- Ed[cntEd].upEd = head[a];
- head[a] = cntEd;
- }
- inline bool equal(ld a , ld b){
- return a - eps < b && a + eps > b;
- }
- bool cmp(ld a , ld b){
- return a > b;
- }
- int main(){
- #ifndef ONLINE_JUDGE
- freopen("3232.in" , "r" , stdin);
- //freopen("3232.out" , "w" , stdout);
- #endif
- N = read();
- M = read();
- ; i <= M ; ++i){
- int a = read() , b = read();
- addEd(a , b);
- addEd(b , a);
- ++du[a];
- ++du[b];
- }
- ; i < N ; ++i){
- gauss[i][i] = ;
- for(int j = head[i] ; j ; j = Ed[j].upEd)
- if(Ed[j].end != N)
- gauss[i][Ed[j].end] = -1.0 / du[Ed[j].end];
- }
- gauss[][N + ] = ;
- ; i < N ; ++i){
- int j = i;
- ))
- ++j;
- if(j != i)
- ; ++k)
- swap(gauss[i][i] , gauss[j][i]);
- while(++j <= N)
- , gauss[j][i]))
- ; k >= i ; --k)
- gauss[j][k] -= gauss[i][k] / gauss[i][i] * gauss[j][i];
- }
- ; i ; --i){
- gauss[i][N + ] /= gauss[i][i];
- gauss[i][i] = ;
- ; j ; --j)
- , gauss[j][i])){
- gauss[j][N + ] -= gauss[j][i] * gauss[i][N + ];
- gauss[j][i] = ;
- }
- }
- ; i <= cntEd ; i += ){
- now[(i + ) >> ] = gauss[Ed[i].end][N + ] / du[Ed[i].end] + gauss[Ed[i + ].end][N + ] / du[Ed[i + ].end];
- }
- sort(now + , now + M + , cmp);
- ; i <= M ; ++i)
- ans += i * now[i];
- printf("%.3Lf" , ans);
- ;
- }
Luogu3232 HNOI2013 游走 高斯消元、期望、贪心的更多相关文章
- BZOJ 3143 HNOI2013 游走 高斯消元 期望
这道题是我第一次使用高斯消元解决期望类的问题,首发A了,感觉爽爽的.... 不过笔者在做完后发现了一些问题,在原文的后面进行了说明. 中文题目,就不翻大意了,直接给原题: 一个无向连通图,顶点从1编号 ...
- bzoj 3143: [Hnoi2013]游走 高斯消元
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1026 Solved: 448[Submit][Status] ...
- BZOJ3143:[HNOI2013]游走(高斯消元)
Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点, ...
- 【BZOJ-3143】游走 高斯消元 + 概率期望
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2264 Solved: 987[Submit][Status] ...
- [HNOI2013][BZOJ3143] 游走 - 高斯消元
题目描述 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边 ...
- 【BZOJ3143】【HNOI2013】游走 高斯消元
题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3143 我们令$P_i$表示从第i号点出发的期望次数.则$P_n$显然为$0$. 对于$P ...
- 【xsy1201】 随机游走 高斯消元
题目大意:你有一个$n*m$的网格(有边界),你从$(1,1)$开始随机游走,求走到$(n,m)$的期望步数. 数据范围:$n≤10$,$m≤1000$. 我们令 $f[i][j]$表示从$(1,1) ...
- HDU2262;Where is the canteen(高斯消元+期望)
传送门 题意 给出一张图,LL从一个点等概率走到上下左右位置,询问LL从宿舍走到餐厅的步数期望 分析 该题是一道高斯消元+期望的题目 难点在于构造矩阵,我们发现以下结论 设某点走到餐厅的期望为Ek 1 ...
- [luogu3232 HNOI2013] 游走 (高斯消元 期望)
传送门 题目描述 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等 ...
随机推荐
- docker 搭建maven 私服
# 搜索镜像 docker search nexus; #拉取nexus镜像docker pull sonatype/nexus; #运行 -id 创建守护式容器--privileged=true 授 ...
- js动态控制表单表格
js动态控制表单表格,这里操作只讲,添加一行,删除一行,删除某一行某一列. 直接放代码: <!DOCTYPE html> <html> <head> <met ...
- 前端开发面试题-HTML(转载)
本文由 本文的原作者markyun 收集总结了一些前端面试题,初学者阅后也要用心钻研其中的原理,重要知识需要系统学习.透彻学习,形成自己的知识链.万不可投机取巧,临时抱佛脚只求面试侥幸混过关是错误的! ...
- android 保存图片,及将图片更新到图库
**保存图片 public static File saveImage(Bitmap bmp) { File appDir = new File(Environment.getExternalStor ...
- JavaScript大杂烩18 - Web开发的MVVM模式
MVC VS. MVP VS. MVVM 了解MVVM模式之前,我们先来简单了解一下从MVC到MVVM的变迁.这个变迁是耦合从紧到松的变迁,是对依赖处理的进化,是应对变化技术的成熟. MVC MV ...
- [MapReduce_add_4] MapReduce 的 join 操作
0. 说明 Map 端 join && Reduce 端 join 1. Map 端 join Map 端 join:大表+小表 => 将小表加入到内存,迭代大表每一行,与之进行 ...
- Django电商项目---完成注册页面和用户登录day1
完成基本的创建项目.用户注册.登录.注销功能 创建Django项目,创建df_user的App 创建静态文件夹static(跟manage.py保持在同一级别下) 复制静态文件(css + image ...
- PLSQL无法粘贴复制
有2个原因会导致这个问题发生: 一:快捷键设置不正确,按照网上的设置方法把复制粘贴的快捷键重新设置一下,然后重启plsql 二:远程桌面连接开着,关闭后试下(亲测有效)
- web页面中快速找到html对应元素两种方法
一.第一种方法(通过先进入开发模式然后再去选择网页元素) 1.打开IE.Chrome.FireFox等,按 F12 键进入开发模式 2.在打开的控制窗口左上角有个 箭头 按钮,点击它之后,此时将鼠标 ...
- 怎么配置 Oracle 侦听器来使用SQL操作ST_Geometry
关于这个内容,其实从ArcSDE9.2推出ST_Geometry就让用户感到很有吸引力,而且特别是在ArcSDE9.3之后,用户使用SQL操作ST_geometry越来越多,但是在配置Oracle监听 ...