Position:


List

Description

  • 一个无向连通图,顶点从1编号到N,边从1编号到M。
    小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边的编号的分数。当小Z 到达N号顶点时游走结束,总分为所有获得的分数之和。
    现在,请你对这M条边进行编号,使得小Z获得的总分的期望值最小。。

xSolution

整体理解:a[i][j]表示从i号点走到j号点概率次数。由于走到n不走了,故a[n][i]=0。i→i为-1。初始值a[1][n+1]=-1,代表从1号点出发次数为1。然后Gauss消元求出每个点的期望经过次数,那么对于一条边ei,它的期望经过次数就为e[i]=a[u[i]][n+1]/d[u[i]]+a[v[i]][n+1]/d[v[i]],将边的期望经过次数排序,根据贪心思想,次数多的边赋小值答案更优,ans=e[i]*(m-i+1)。
模板:高斯消元还是第一次写,O(n^3)。
深入理解:每一个未知数代表从这个点到达的次数,用它/出度即为对与它相邻边贡献。考虑一个点,到达次数f[i]=∑f[from]/d[from],移到左边-f[i]+∑f[from]/d[from]=0,特殊的,对于第一个点次数右边等于-1,即开始从这里出发,次数为1。对于第n个点,有点奇怪,到这个点的次数为0,这样是为了满足条件到了n号点,就不会出去了,不会对其它点的值造成影响,而最后也不是要求每个点到达次数期望。而是每条边的次数,而n也不会对与其相连的边的期望次数造成影响,所以Accept。

Code

// <hang.cpp> - 08/01/16 15:30:38
// This file is made by YJinpeng,created by XuYike's black technology automatically.
// Copyright (C) 2016 ChangJun High School, Inc.
// I don't know what this program is. #include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#define MOD 1000000007
#define EPS 1e-10
#define INF 1e9
using namespace std;
typedef long long LL;
const int MAXN=;
const int MAXM=;
inline int max(int &x,int &y) {return x>y?x:y;}
inline int min(int &x,int &y) {return x<y?x:y;}
inline int getint() {
register int w=,q=;register char ch=getchar();
while((ch<''||ch>'')&&ch!='-')ch=getchar();
if(ch=='-')q=,ch=getchar();
while(ch>=''&&ch<='')w=w*+ch-'',ch=getchar();
return q?-w:w;
}
double ans;
int n,m,d[MAXN],u[MAXN*MAXN],v[MAXN*MAXN];
double a[MAXN][MAXN],e[MAXN*MAXN];
void Gauss(){
for(int i=;i<=n;i++){
for(int k=i+;k<=n;k++)if(fabs(a[k][i])>fabs(a[i][i]))swap(a[k],a[i]);
for(int j=n+;j>=i;j--)a[i][j]/=a[i][i];
for(int k=i+;k<=n;k++)
for(int j=n+;j>=i;j--)a[k][j]-=a[k][i]*a[i][j];
}
for(int i=n;i;i--)
for(int k=i-;k;k--)a[k][n+]-=a[k][i]*a[i][n+];
}
int main()
{
freopen("hang.in","r",stdin);
freopen("hang.out","w",stdout);
n=getint();m=getint();
for(int i=;i<=m;i++){
u[i]=getint();v[i]=getint();
d[u[i]]++;d[v[i]]++;
}
for(int i=;i<=m;i++){
a[u[i]][v[i]]+=1.0/d[v[i]];
a[v[i]][u[i]]+=1.0/d[u[i]];
}
for(int i=;i<=n;i++)a[n][i]=,a[i][i]=-;
a[][n+]=-;ans=;Gauss();
for(int i=;i<=m;i++)e[i]=a[u[i]][n+]/d[u[i]]+a[v[i]][n+]/d[v[i]];
sort(e+,e++m);
for(int i=;i<=m;i++)ans+=e[i]*(m-i+);
printf("%.3f\n",ans);
return ;
}

【Hnoi2013】Bzoj3143 游走的更多相关文章

  1. [HNOI2013][BZOJ3143] 游走 - 高斯消元

    题目描述 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边 ...

  2. 【BZOJ3143】【HNOI2013】游走 && 【BZOJ3270】博物馆 【高斯消元+概率期望】

    刚学完 高斯消元,我们来做几道题吧! T1:[BZOJ3143][HNOI2013]游走 Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小 ...

  3. 「HNOI2013」游走

    「HNOI2013」游走 题目描述 一个无向连通图,顶点从 \(1\) 编号到 \(N\) ,边从 \(1\) 编号到 \(M\) .小 \(Z\) 在该图上进行随机游走,初始时小 \(Z\) 在 \ ...

  4. bzoj3143 游走

    Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点, ...

  5. bzoj3143 游走 期望dp+高斯消元

    题目传送门 题意: 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得 ...

  6. 【BZOJ3143】【HNOI2013】游走 高斯消元

    题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3143 我们令$P_i$表示从第i号点出发的期望次数.则$P_n$显然为$0$. 对于$P ...

  7. 【BZOJ】【3143】【HNOI2013】游走

    数学期望/高斯消元/贪心 啊……用贪心的思路明显是要把经过次数期望越大的边的权值定的越小,那么接下来的任务就是求每条边的期望经过次数. 拆边为点?nonono,连接x,y两点的边的期望经过次数明显是 ...

  8. 【HNOI2013】游走

    题面 题解 图上的期望大部分是\(dp\),无向图的期望大部分是高斯消元 设\(f[i]\)表示走到点\(i\)的期望,\(d[i]\)表示\(i\)的度,\(to(i)\)表示\(i\)能到达的点集 ...

  9. bzoj3143游走

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3143 学到了无向图中点被经过的期望次数和边被经过的期望次数. 一个点被经过的期望次数  就是 ...

随机推荐

  1. Java变量及数据类型

    变量及数据类型 变量 变量定义格式:数据类型 变量名 = 初始化值; 基本数据类型 整形数据 package com.ahabest.demo; //输出整形数据的最小值,默认值,最大值,二进制位数 ...

  2. script标签属性sync和defer

    <script src="a.js" defer></script> 加了defer属性script标签的页面,运行流程如下:   1.浏览器开始解析HTM ...

  3. LeetCode_16 3SumCloest

    3Sum Closest Given an array nums of n integers and an integer target, find three integers in nums su ...

  4. [gulp]Cannot find module 'orchestrator'

    从github 将项目 clone到本地后,运行gulp 启动项目时,出现这个问题的原因是: 1.clone 项目连同 nodemodules目录也一起下载到本地. 解决方式: 1.从本地删除node ...

  5. python3 http.server备忘

    python3英文的 打印出来应该不错: https://docs.python.org/3/library/http.server.html#module-http.server python2.7 ...

  6. Docker从入门到实践

    一般说来 SPA 的项目我们只要启一个静态文件 Server 就可以了,但是针对传统项目就不一样了,一个项目会依赖很多服务端程序.之前我们的开发模式是在一台开发机上部署开发环境,所有人都在这台开发机上 ...

  7. 二: 安装centos服务环境软件mysql httpd php

    安装mysql--------------------------------------wget http://dev.mysql.com/get/mysql-community-release-e ...

  8. 如何使用微信小程序video组件播放视频

    相信很多人都有在手机上看视频的习惯,比较看视频更真实更形象.那么我们在微信小程序中如何观看视频呢?这就需要video组件的帮忙了.今天我们就给大家演示一下,如何用微信小程序组件video播放视频.我们 ...

  9. 腾讯云:基于 Ubuntu 搭建 VNC 远程桌面服务

    基于 Ubuntu 搭建 VNC 远程桌面服务 前言 任务时间:5min ~ 10min 必要知识 本教程假设您已学习以下 Ubuntu 基本操作: 连接 SSH 执行命令 编辑文件 如果还没有掌握 ...

  10. 表格头部header固定

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...