题意:给定一个n*n的地图,上面有k个障碍点不能走,有一个机器人从(0,0)出发,每次等概率的不动或者往上下左右没有障碍的地方走动,问走无限步后停在图的右下部的概率

n<=1e4,k<=1e3

思路:据说是找规律

      From https://blog.csdn.net/anna__1997/article/details/78494788  牛逼的证明

   马尔科夫链的随机游走模型

  • 可建立状态转移矩阵,对n * n 的图中n * n 个点编号为0 ~[ (n - 1) * n + n – 1] 设最大编号为max
    P = p(i, j) = [p(0, 0) p(0, 1) … p(0, max)
    P(1, 0) p(1, 1) … p(1, max)

    P(max, 0) p(max, 1) … p(max, max)]
    π(i) 为i时间各点的概率
    π(n + 1) = π(n) * P
    当时间->无穷 π(n + 1)->π
    可以通过 π * P = π 计算
    验证猜测结果正确
    *******************************************************
    找规律的答案 有待证明
    现在能想到的是 整个封闭系统每个格子以出现机器人的概率作为权值 在很长的时间线上是一个熵增的
    过程(想到元胞自动机),如果要模拟这个概率扩散的过程的话,格子的权值的更新是一个用他所能到达的格子的权值
    和他自身的权值迭代的过程,这个过程中可以发现他的相邻的格子的权值是在不断同化的,因此,在无穷远后
    (0, 0)的和他周围的格子的权值不在体现优势,而更加开放的格子则更占优(可根据迭代公式理解)

    *******************************************************

    考虑每个障碍点对答案的影响,找规律后的得到只与障碍点所在的位置与周围的联通情况有关

    判格子是不是障碍可以用set

     #include<cstdio>
    #include<cstring>
    #include<string>
    #include<cmath>
    #include<iostream>
    #include<algorithm>
    #include<map>
    #include<set>
    #include<queue>
    #include<vector>
    using namespace std;
    typedef long long ll;
    typedef unsigned int uint;
    typedef unsigned long long ull;
    typedef pair<int,int> PII;
    typedef vector<int> VI;
    #define fi first
    #define se second
    #define MP make_pair
    #define N 11000
    #define M 210
    #define MOD 1e9+7
    #define eps 1e-8
    #define pi acos(-1)
    int dx[]={,-,,,},dy[]={,,,-,};
    set<int>st; int read()
    {
    int v=,f=;
    char c=getchar();
    while(c<||<c) {if(c=='-') f=-; c=getchar();}
    while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
    return v*f;
    } int gcd(int x,int y)
    {
    if(y==) return x;
    return gcd(y,x%y);
    } int main()
    {
    //freopen("hdoj6229.in","r",stdin);
    //freopen("hdoj6299.out","w",stdout);
    int cas;
    scanf("%d",&cas);
    for(int v=;v<=cas;v++)
    {
    st.clear();
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=;i<=m;i++)
    {
    int x,y;
    scanf("%d%d",&x,&y);
    st.insert(x*N+y);
    }
    int s1=n*n*-n*;
    int s2=n*(n+)/*-*n-;
    set<int>::iterator t=st.begin();
    while(t!=st.end())
    {
    int s=*t;
    int x=s/N;
    int y=s%N;
    for(int i=;i<=;i++)
    {
    int tx=x+dx[i];
    int ty=y+dy[i];
    if(tx<||tx>=n||ty<||ty>=n||st.count(tx*N+ty)) continue;
    s1--;
    if(tx+ty>=n-) s2--;
    } if(x+y>=n-)
    {
    s2-=;
    if(x==||x==n-) s2++;
    if(y==||y==n-) s2++;
    } s1-=;
    if(x==||x==n-) s1++;
    if(y==||y==n-) s1++;
    t++;
    } int k=gcd(s1,s2);
    printf("Case #%d: %d/%d\n",v,s2/k,s1/k);
    }
    return ;
    }

【HDOJ6229】Wandering Robots(马尔科夫链,set)的更多相关文章

  1. 从随机过程到马尔科夫链蒙特卡洛方法(MCMC)

    从随机过程到马尔科夫链蒙特卡洛方法 1. Introduction 第一次接触到 Markov Chain Monte Carlo (MCMC) 是在 theano 的 deep learning t ...

  2. 蒙特卡洛马尔科夫链(MCMC)

    蒙特卡洛马尔科夫链(MCMC) 标签: 机器学习重要性采样MCMC蒙特卡洛 2016-12-30 20:34 3299人阅读 评论(0) 收藏 举报  分类: 数据挖掘与机器学习(41)  版权声明: ...

  3. MCMC(二)马尔科夫链

    MCMC(一)蒙特卡罗方法 MCMC(二)马尔科夫链 MCMC(三)M-H采样和Gibbs采样(待填坑) 在MCMC(一)蒙特卡罗方法中,我们讲到了如何用蒙特卡罗方法来随机模拟求解一些复杂的连续积分或 ...

  4. 《principles of model checking》中的离散时间马尔科夫链

    <principles of model checking>中的离散时间马尔科夫链 说明:此文为我自学<principles of model checking>第十章内容的笔 ...

  5. 13张动图助你彻底看懂马尔科夫链、PCA和条件概率!

    13张动图助你彻底看懂马尔科夫链.PCA和条件概率! https://mp.weixin.qq.com/s/ll2EX_Vyl6HA4qX07NyJbA [ 导读 ] 马尔科夫链.主成分分析以及条件概 ...

  6. N元马尔科夫链的实现

    马尔可夫模型(Markov Model)是一种统计模型,广泛应用在语音识别,词性自动标注,音字转换,概率文法等各个自然语言处理等应用领域.经过长期发展,尤其是在语音识别中的成功应用,使它成为一种通用的 ...

  7. 马尔科夫链蒙特卡洛(Markov chain Monte Carlo)

    (学习这部分内容大约需要1.3小时) 摘要 马尔科夫链蒙特卡洛(Markov chain Monte Carlo, MCMC) 是一类近似采样算法. 它通过一条拥有稳态分布 \(p\) 的马尔科夫链对 ...

  8. Chapter 4 马尔科夫链

    4.1 引言 现在要研究的是这样一种过程: 表示在时刻的值(或者状态),想对一串连续时刻的值,比如:,, ... 建立一个概率模型. 最简单的模型就是:假设都是独立的随机变量,但是通常这种假设都是没什 ...

  9. 【强化学习】MOVE37-Introduction(导论)/马尔科夫链/马尔科夫决策过程

    写在前面的话:从今日起,我会边跟着硅谷大牛Siraj的MOVE 37系列课程学习Reinforcement Learning(强化学习算法),边更新这个系列.课程包含视频和文字,课堂笔记会按视频为单位 ...

随机推荐

  1. jfinal的配置文件详解

    1.去官网下载最新的jar包(我这是JFinal-lib-2.2) tomcat+mysql 所需要的jar 2.配置web.xml <filter> <filter-name> ...

  2. 监控电脑CPU,内存,文件大小,硬盘空间,IP,用户名

    public class MonitorTools { /// <summary> /// 获取具体进程的内存,线程等参数情况 /// </summary> /// <p ...

  3. Docker 在容器中部署静态网站

    Docker 在容器中部署静态网站 在容器中部署静态网站 设置容器的端口映射 run -P``--publish-all=true|false:容器暴露的所有端口进行映射 -p``--publish= ...

  4. october安装过程

    下载代码 composer create-project october/october myoctober 准备好数据库, create database october; 配置环境于安装 php ...

  5. php 计算当天凌晨时间戳 以及获取其他常用时间戳

    php 计算当日凌晨时间戳 以及获取其他常用时间戳(持续补充中...) 获取当天凌晨时间戳: echo strtotime(date('Y-m-d')); 以下再列举一些获取其他常用时间戳的方法 获取 ...

  6. redis主从+哨兵模式

    主从模式配置分为手动和配置文件两种方式进行配置,我现在有192.168.238.128(CentOS1).192.168.238.131(CentOS3).192.168.238.132(CentOS ...

  7. 实验二 JSP基本动态元素的使用

    实验二  JSP基本动态元素的使用 实验性质:验证性          实验学时:  2学时      实验地点: 一 .实验目的与要求 1.掌握JSP中声明变量.定义方法.java程序片及表达式的使 ...

  8. 中移物联网onenet入门学习笔记2:中移物联的通信格式

    中移物联网硬件接入协议:LWM2M协议,EDP协议,MQTT协议,HTTP协议,TCP透传,MODBUS协议,JT/T808协议,RCMP协议 8种通信协议的区别在哪? 详细比较 EDP:OneNET ...

  9. POJ:2342-Anniversary party(树形dp入门题目)

    传送门:http://poj.org/problem?id=2342 Anniversary party Time Limit: 1000MS Memory Limit: 65536K Descrip ...

  10. Post页面爬取失败__编码问题

    python3爬取Post页面时, 报以下错误 "POST data should be bytes or an iterable of bytes. It cannot be of typ ...