题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6229

转载:

https://blog.csdn.net/Anna__1997/article/details/78494788

题目大意

N * N的区域内,有K个格子不能到达,机器人从(0, 0)出发有均等的该概率留在原地和到达上下左右可到达的区域,问无穷远的时间以后有多大概率到达 x + y >= n - 1 的区域。

思路

计算除了不能到达的格子之外的格子能通往多少方向d,则格子的权值为d + 1,

ans = x + y >= n - 1 的格子的权值之和 / 总权值和

*******************************************************
马尔科夫链的随机游走模型
可建立状态转移矩阵,对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)的和他周围的格子的权值不在体现优势,而更加开放的格子则更占优(可根据迭代公式理解)

AC代码:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef pair<int,int> pii;
  4.  
  5. const int maxn=+;
  6. const int maxk=+;
  7. const int dx[]={,,,-};
  8. const int dy[]={,,-,};
  9.  
  10. int n,k;
  11. map<pii,bool> mp;
  12. int p,q;
  13.  
  14. inline int gcd(int m,int n){return n?gcd(n,m%n):m;}
  15. inline int check(const int &x,const int &y)
  16. {
  17. if(x<||x>=n||y<||y>=n) return ;
  18.  
  19. if((x==||x==n-) && (y==||y==n-)) return ;
  20. else if((x==||x==n-) && (y!=&&y!=n-)) return ;
  21. else if((y==||y==n-) && (x!=&&x!=n-)) return ;
  22. else return ;
  23. }
  24.  
  25. int main()
  26. {
  27. int T;
  28. cin>>T;
  29. for(int kase=;kase<=T;kase++)
  30. {
  31. mp.clear();
  32.  
  33. scanf("%d%d",&n,&k);
  34. for(int i=,x,y;i<=k;i++)
  35. {
  36. scanf("%d%d",&x,&y);
  37. mp[make_pair(x,y)]=;
  38. }
  39.  
  40. p=*+*(n-)*+(n-)*(n-)/*;
  41. q=*+*(n-)*+(n-)*(n-)*;
  42. for(map<pii,bool>::iterator it=mp.begin();it!=mp.end();it++)
  43. {
  44. int x=((*it).first).first;
  45. int y=((*it).first).second;
  46. if(x+y>=n-) p-=check(x,y);
  47. q-=check(x,y);
  48.  
  49. for(int i=;i<;i++)
  50. {
  51. int nxtx=x+dx[i];
  52. int nxty=y+dy[i];
  53. if(check(nxtx,nxty)> && mp.count(make_pair(nxtx,nxty))==)
  54. {
  55. if(nxtx+nxty>=n-) p--;
  56. q--;
  57. }
  58. }
  59. }
  60.  
  61. int g=gcd(p,q);
  62. printf("Case #%d: %d/%d\n",kase,p/g,q/g);
  63. }
  64. }

HDU 6229 - Wandering Robots - [概率题]的更多相关文章

  1. HDU 6229 Wandering Robots(2017 沈阳区域赛 M题,结论)

    题目链接  HDU 6229 题意 在一个$N * N$的格子矩阵里,有一个机器人. 格子按照行和列标号,左上角的坐标为$(0, 0)$,右下角的坐标为$(N - 1, N - 1)$ 有一个机器人, ...

  2. hdu6229 Wandering Robots 2017沈阳区域赛M题 思维加map

    题目传送门 题目大意: 给出一张n*n的图,机器人在一秒钟内任一格子上都可以有五种操作,上下左右或者停顿,(不能出边界,不能碰到障碍物).题目给出k个障碍物,但保证没有障碍物的地方是强联通的,问经过无 ...

  3. HDU-6229 ICPC-沈阳M- Wandering Robots 概率

    HDU - 6229 题意: 在一个n*n的地图中,有一个初始在(0,0)位子的机器人,每次等概率的向相邻的格子移动或者留在原地.问最后留在格子(x,y)(x+y>=n-1)的地方的概率. 思路 ...

  4. HDU 4465 - Candy(概率与数学优化)

    2012成都Regional的B题,花了一个小时推出了式子,但是搞了好久发现都控制不了精度,后来突然想到组合数可以用log优化,改了之后就AC了 比较水的概率题 #include <stdio. ...

  5. ACM-ICPC 2017 沈阳赛区现场赛 M. Wandering Robots && HDU 6229(思维+期望)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6229 参考题解:https://blog.csdn.net/lifelikes/article/det ...

  6. HDU 5985/nowcoder 207D - Lucky Coins - [概率题]

    题目链接:https://www.nowcoder.com/acm/contest/207/D 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5985 ...

  7. HDU 5245 Joyful(概率题求期望)

    D - Joyful Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit S ...

  8. HDU 2843 I Will Win(概率题?,怨念颇深,简单)

    题目 真不想说什么,,,这神题真讨厌,,,多校的.. //又是一道神题... #include<stdio.h> #include<string.h> //最大公约数 int ...

  9. 【概率】【找规律】hdu6229 Wandering Robots

    题意:一个机器人在正方形迷宫的左上角,迷宫里有些格子有障碍物,每一步机器人会等概率地向能走的格子转移(包含自身).问你无限长的时间之后,机器人处于矩形对角线的右下方的概率. 无限长时间意味着,起点没有 ...

随机推荐

  1. maven打包含有多个main程序的jar包及运行方式

    pom.xml <build>        <plugins>            <plugin>                <groupId> ...

  2. java转换日期格式为 RFC1123

    import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import java.util. ...

  3. Linux 下 nginx反向代理与负载均衡

    前面几篇记录下nginx的基本运功,代理服务器的访问,这里来试验下nginx的反向代理. 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给 ...

  4. 【iCore4 双核心板_ARM】例程五:SYSTICK定时器 实验——定时点亮LED

    实验原理: 通过STM32的三个GPIO口驱动三色LED的三个通道,设定GPIO为推挽输出模式,采 用灌电流方式与LED连接,输出高电平LED灭,输出低电平LED亮,通过系统定时器实现 1s定时,每秒 ...

  5. uboot i2c 操作函数记录

    I2C 在 u-boot 上面,有直接操作 I2C 的函数 // drivers/i2c/i2c_core.c // 设置在哪个 I2C bus 上工作 276 int i2c_set_bus_num ...

  6. Ubuntu下的Wine&WineQQ

    一.安装Wine 1.添加PPA sudo add-apt-repository ppa:ubuntu-wine/ppa 2.更新列表 sudo apt-get update 3.安装Wine sud ...

  7. 短信文本查找之 MATCH 与 LIKE

    最近发现原生短信应用的搜索功能的搜索结果十分不准确,所以就开始追踪代码: 关于android searchview的使用这里就不描述了,简单说一下,android的searchVIew是支持autoc ...

  8. 【转】Windows下charles 使用教程指南

    1.下载就不用再说了,网上好多破解的安装包 2.下面是pc端的抓包使用情况 Charles支持抓去http.https协议的请求,不支持socket.然后charles会自动配置IE浏览器和工具的代理 ...

  9. 关于Unity中NGUI的3D角色血条的实现

    首先要到Unity的Assets Store里面去下载一个扩展的Package叫NGUI HUD Text v1.13(81),注意如果没有安装NGUI就必须先安装NGUI插件,否则会用不了,因为HU ...

  10. history 命令历史

    在终端中按捉[Ctrl]键的同时[r]键,出现提示:(reverse-i-search),此时你尝试一下输入你以前输入过的命令,当你每输入一个字符 的时候,终端都会滚动显示你的历史命令.当显示到你想找 ...