【BZOJ】【3143】【HNOI2013】游走
数学期望/高斯消元/贪心
啊……用贪心的思路明显是要把经过次数期望越大的边的权值定的越小,那么接下来的任务就是求每条边的期望经过次数。
拆边为点?nonono,连接x,y两点的边的期望经过次数明显是 times[x]/du[x]+times[y]/du[y] 所以只要求出每个点的期望经过次数即可
像「随机程序」那道题一样,(马尔可夫过程?)高斯消元求解即可
特别的,第1个点是起点,方程组的常数项为1,而 「第N个点是终点,期望经过次数为0,不参与消元」 (因为走到N就停下了,不会“经过”)(这个地方WA了……sigh)
/**************************************************************
Problem: 3143
User: Tunix
Language: C++
Result: Accepted
Time:3716 ms
Memory:8284 kb
****************************************************************/ //BZOJ 3143
#include<cmath>
#include<vector>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
#define pb push_back
using namespace std;
int getint(){
int v=,sign=; char ch=getchar();
while(ch<''||ch>''){ if (ch=='-') sign=-; ch=getchar();}
while(ch>=''&&ch<=''){ v=v*+ch-''; ch=getchar();}
return v*=sign;
}
const int N=,M=;
const double eps=1e-;
typedef double Matrix[N][N];
/******************tamplate*********************/
void gauss_jordan(Matrix A,int n){
int r;
rep(i,n){
r=i;
for(int j=i+;j<n;j++)
if (fabs(A[j][i]) > fabs(A[r][i])) r=j;
if (fabs(A[r][i]) < eps) continue;
if (r!=i) F(j,,n) swap(A[r][j],A[i][j]);
rep(k,n) if (k!=i)
D(j,n,i) A[k][j]-=A[k][i]/A[i][i]*A[i][j];
}
} Matrix A;
int n,m,d[N],u[M],v[M];
double w[M],x[N];
vector<int>G[N]; int main(){
#ifndef ONLINE_JUDGE
freopen("3143.in","r",stdin);
freopen("3143.out","w",stdout);
#endif
n=getint(); m=getint();
F(i,,m){
u[i]=getint()-; v[i]=getint()-;
G[u[i]].pb(v[i]); G[v[i]].pb(u[i]);
}
rep(i,n) d[i]=G[i].size();
memset(A,,sizeof (A));
rep(i,n-){
A[i][i]=;
rep(j,G[i].size())
A[i][G[i][j]]=-1.0/d[G[i][j]];
if (i==) A[i][n]=1.0;
} gauss_jordan(A,n);
rep(i,n) x[i]=A[i][n]/A[i][i];
x[n-]=;
F(i,,m) w[i]=x[u[i]]/d[u[i]]+x[v[i]]/d[v[i]];
sort(w+,w+m+);
double ans=0.0;
F(i,,m) ans+=w[m-i+]*i;
printf("%.3lf\n",ans);
return ;
}
【BZOJ】【3143】【HNOI2013】游走的更多相关文章
- bzoj 3143: [Hnoi2013]游走 高斯消元
		
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1026 Solved: 448[Submit][Status] ...
 - bzoj 3143 [Hnoi2013]游走 期望dp+高斯消元
		
[Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3394 Solved: 1493[Submit][Status][Disc ...
 - BZOJ 3143 HNOI2013 游走 高斯消元 期望
		
这道题是我第一次使用高斯消元解决期望类的问题,首发A了,感觉爽爽的.... 不过笔者在做完后发现了一些问题,在原文的后面进行了说明. 中文题目,就不翻大意了,直接给原题: 一个无向连通图,顶点从1编号 ...
 - BZOJ 3143: [Hnoi2013]游走 [概率DP 高斯消元]
		
一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边的编号的分 ...
 - bzoj 3143: [Hnoi2013]游走
		
Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点, ...
 - BZOJ 3143: [Hnoi2013]游走 概率与期望+高斯消元
		
Description 一个无向连通图,顶点从1编号到N,边从1编号到M.小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获 ...
 - bzoj 3143 [Hnoi2013]游走(贪心,高斯消元,期望方程)
		
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3143 [题意] 给定一个无向图,从1走到n,走过一条边得到的分数为边的标号,问一个边的 ...
 - [BZOJ 3143][HNOI2013]游走(数学期望)
		
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3143 分析: 易得如果知道了每条边经过的数学期望,那就可以贪心着按每条边的期望的大小赋 ...
 - ●BZOJ 3143 [Hnoi2013]游走
		
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3143题解: 期望dp,高斯消元 首先有这样一种贪心分配边的编号的方案:(然后我没想到,233 ...
 - BZOJ.3143.[HNOI2013]游走(概率 期望 高斯消元)
		
题目链接 参考 远航之曲 把走每条边的概率乘上分配的标号就是它的期望,所以我们肯定是把大的编号分配给走的概率最低的边. 我们只要计算出经过所有点的概率,就可以得出经过一条边(\(u->v\))的 ...
 
随机推荐
- (转)[转]大数据时代的 9 大Key-Value存储数据库
			
在过去的十年中,计算世界已经改变.现在不仅在大公司,甚至一些小公司也积累了TB量级的数据.各种规模的组织开始有了处理大数据的需求,而目前关系型数据库在可缩放方面几乎已经达到极限. 一个解决方案是使用键 ...
 - 10款基于jquery的web前端特效及源码下载
			
1.jQuery时间轴插件:jQuery Timelinr 这是一款可用于展示历史和计划的时间轴插件,尤其比较适合一些网站展示发展历程.大事件等场景.该插件基于jQuery,可以滑动切换.水平和垂直滚 ...
 - (一)Qt界面设计布局
			
Qt提供四种布局: 这种布局生成的格局比较单一,这时候需要另外两个填充控件,来生成整行或整列的格式. 注意:使用Spacers控件时,必须要放在layouts中的布局中,否则无法保存. 示例: 1.往 ...
 - VBA访问SQLSERVER2005筛选数据库
			
EXCEL版本2010, 引用 Private Sub CommandButton1_Click() Dim conn As New ADODB.Connection Dim rs As New AD ...
 - oracle11.0.2 64位版本  Toad连接
			
今天重装了系统 oracle oracle客户端 之前连不上toad 今天总结 客户端路径:E:\app\ruonanxiao-pc\product\11.2.0\client_1 服务端路径:E: ...
 - 【转】JavaScript里的this指针
			
用自然语言的角度理解JavaScript中的this关键字 <script type="text/javascript"> function ftn03(){ var ...
 - nginx总结
			
kill int 2333 进程号 停止程序 kiil quit 2322 优雅停止服务 kill -HUP 2333 优雅重启 从新读取配置文件 kill -HUP 'cat logs/n ...
 - 读取iis日志到sql server
			
using Fasterflect; using System; using System.Collections.Generic; using System.Data.SqlClient; usin ...
 - 用golang启动一个daemon
			
用golang启动一个daemon package main import ( "fmt" "log" "os" "runtime ...
 - Oracle 动态视图3 V$SESSION
			
每一个连接到数据库实例中的session都拥有一条记录.包括用户session及后台进程如DBWR,LGWR,arcchiver等 Column Datatype Description SADDR ...