【BZOJ3270】博物馆

题意:给定一张无向连通图,两个人初始各在某个点上,每个时刻每个人会不动或任选出边走,求两人最终期望在哪里相遇

网上题解除了PoPoQQQ都说的不好,确切的说给了我很多误导,PoPoQQQ的:http://blog.csdn.net/popoqqq/article/details/44777907

我的解法

状态表示为f[k][i][j]  表示第K步第一人在i第二人在j

按步数划分阶段,对于每个阶段f[k][i][j]可以由f[k - 1][p][q]推出来

要求的东西是 sigma i = 1..oo (f[i][V][V])

所以可以把所有阶段的方程(矩阵)直接加起来,消去阶段(步数)这一维

对于K=1 方程只有一行 1= f[a][b]

最后的方程形如

for_each (i, j)

  for_each (k, l)

    sigma p[(k, l) to (i, j)] * x[k][l] = x[i][j]

特别的

  for_each (k, l)

    sigma p[(k, l) to (a, b)] * x[k][l] + 1 = x[a][b]

#include <cstdio>
#include <cmath>
#include <iostream>
using namespace std;
const int N = 410;
int n, m, a, b;
double map[N][N], p[N][N];
bool g[N][N];
int out[N];
void gauss(int n, double a[N][N]) {
    int i, j, k, r;
    for (i = 0; i < n; i ++) {
        r = i;
        for (j = i + 1; j < n; j ++)
            if (fabs(a[j][i]) > fabs(a[r][i])) r = j;
        if (r != i) for (j = 0; j <= n; j ++) swap(a[r][j], a[i][j]);
        for (k = i + 1; k < n; k ++) {
            double f = a[k][i] / a[i][i];
            for (j = i; j <= n; j ++) a[k][j] -= f * a[i][j];
        }
    }
    for (i = n - 1; i >= 0; i --) {
        for (j = i + 1; j < n; j ++)
            a[i][n] -= a[j][n] * a[i][j];
        a[i][n] /= a[i][i];
    }
}

int main() {
    scanf("%d%d%d%d", &n, &m, &a, &b);
    a --; b --;
    for (int i = 1, u, v; i <= m; i ++) {
        scanf("%d%d", &u, &v);
        u --; v --;
        g[u][v] = g[v][u] = 1;
        out[u] ++;
        out[v] ++;
    }
    for (int i = 0; i < n; i ++)
        scanf("%lf", &map[i][i]);
    for (int i = 0; i < n; i ++)
        for (int j = 0; j < n; j ++) {
            if (i == j) continue;
            if (g[i][j] == false)
                map[i][j] = 0;
            else
                map[i][j] = (1.0 - map[i][i]) / out[i];
        }
    for (int i = 0; i < n; i ++)
        for (int j = 0; j < n; j ++)
            for (int k = 0; k < n; k ++)
                for (int l = 0; l < n; l ++) {
                    int u = n * i + j;
                    int v = n * k + l;
                    if (k != l)
                        p[u][v] = map[k][i] * map[l][j];
                    else
                        p[u][v] = 0;
                }
    for (int i = 0; i < n * n; i ++)
        p[i][i] -= 1;
    p[n * a + b][n * n] = -1;
    gauss(n * n, p);
    for (int i = 0; i < n; i ++)
        printf("%.6lf ", p[n * i + i][n * n]);
    putchar(10);
    return 0;
}
时间: 2024-08-05 08:20:55

【BZOJ3270】博物馆的相关文章

BZOJ3270: 博物馆

3270: 博物馆 Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 269  Solved: 147[Submit][Status][Discuss] Description 有一天Petya和他的朋友Vasya在进行他们众多旅行中的一次旅行,他们决定去参观一座城堡博物馆.这座博物馆有着特别的样式.它包含由m条走廊连接的n间房间,并且满足可以从任何一间房间到任何一间别的房间. 两个人在博物馆里逛了一会儿后两人决定分头行动,去看各自感兴趣的艺术品.他

【概率dp 高斯消元】bzoj3270: 博物馆

一类成环概率dp的操作模式 Description 有一天Petya和他的朋友Vasya在进行他们众多旅行中的一次旅行,他们决定去参观一座城堡博物馆.这座博物馆有着特别的样式.它包含由m条走廊连接的n间房间,并且满足可以从任何一间房间到任何一间别的房间. 两个人在博物馆里逛了一会儿后两人决定分头行动,去看各自感兴趣的艺术品.他们约定在下午六点到一间房间会合.然而他们忘记了一件重要的事:他们并没有选好在哪儿碰面.等时间到六点,他们开始在博物馆里到处乱跑来找到对方(他们没法给对方打电话因为电话漫游费

【BZOJ3270】【高斯消元】博物馆

Description 有一天Petya和他的朋友Vasya在进行他们众多旅行中的一次旅行,他们决定去参观一座城堡博物馆.这座博物馆有着特别的样式.它包含由m条走廊连接的n间房间,并且满足可以从任何一间房间到任何一间别的房间. 两个人在博物馆里逛了一会儿后两人决定分头行动,去看各自感兴趣的艺术品.他们约定在下午六点到一间房间会合.然而他们忘记了一件重要的事:他们并没有选好在哪儿碰面.等时间到六点,他们开始在博物馆里到处乱跑来找到对方(他们没法给对方打电话因为电话漫游费是很贵的) 不过,尽管他们到

【BZOJ3270】博物馆 概率DP 高斯消元

链接: #include <stdio.h> int main() { puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢"); puts("网址:blog.csdn.net/vmurder/article/details/46467273"); } 题解: 同BZOJ3143 游走 http://blog.csdn.net/Vmurder/article/details/44542575 代码略

博物馆 bzoj3270

首先最难想的是两个人要在同一时间,同一地点相遇,这样很难处理,所以用类似于聪聪和可可的方法,用f[i][j]表示A在i位置,B在j位置,那么f[i][j]的转移方法就有四个 1.两个人都在原地没动,则a[f[i][j]]+=a[f[i][j]]*p[i]*p[j]; 2(3).其中有一个人动,以A动为例 a[f[i][j]]+=p[j]*((1-p[v]).chu[v])*a[f[v][j]]; 4.两人都动,类比2即可. 注意到f是一个矩阵,所以将其编号,之后用高斯消元,接触每一个f[i][i

360全景漫游技术让博物馆、展厅永不闭馆

360全景制作通过把一组照片无缝拼接合成专业360全景拍摄,360全景视频采用技术制作成可以用鼠标随意上下左右前后拖动观看3D效果,如身临其境般感觉. 如今,这些令人尴尬的情况将不复存在,观众在参观博物馆时不仅不用再租讲解器,还能从手持的电子设备上看到展品的真实360全景.甚至可以坐在家里,通过鼠标就可以身临其境的感受艺术的氛围. 虚拟网上展厅结合了360全景.网络通讯技术.数据库技术等多种高科技手段,并采用嵌入IE页面的方式运行,无需下载客户端,普通家庭的带宽即可流畅在线观看畅游博物馆甚至可以

基于bootstrap模板-现代浏览器博物馆网页源代码

<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-wid

参观广东省博物馆

作者:朱金灿 来源:http://blog.csdn.net/clever101 过年放假在回京前路过广州,抽空参观了一下广东省博物馆,发现这还真是一个有特色而又免费的地方.在临江大道中公交站下车,往前走几十米,发现前面在一片大同小异的高楼大厦中出现一个很有特色的建筑,那感觉有点像在黄沙漫漫的沙漠中发现一片树林.我估计那就是广东博物馆了.它的真貌是这样的: (该图片来自网上) 春节期间恰好有一个广西壮族历史文化展--那山那水那人,正好参观了一下,发现壮族的文化也很有特色.看完壮族历史文化展,专心

实践周----军事博物馆

今天我们去了军事博物馆. 因为军事博物馆主体正在装修,所以只能参观外部的几个展棚,展品也相对较少. 以我国自行设计制造,并已列装的坦克.火炮.步战车.飞机.舰艇.导弹等大型系列兵器为主体,配以通信指挥.工程排爆.后勤保障等装备,全面展示我军大型兵器的种类.性能和发展趋势,传播常规军事装备知识,以提高民族自豪感的自信心.各种兵器装备按现代作战模式.带战术背景陈列.每个类别按照战斗要求配置,如导弹基地.防空群.后勤基地等,让观众既了解各类兵器的作用,又掌握现代战争常识.同时设计制作一大型指挥所,通过