HDU 6229 Wandering Robots(2017 沈阳区域赛 M题,结论)
题目链接 HDU 6229
题意 在一个$N * N$的格子矩阵里,有一个机器人。
格子按照行和列标号,左上角的坐标为$(0, 0)$,右下角的坐标为$(N - 1, N - 1)$
有一个机器人,初始位置为$(0, 0)$。
现在这个矩阵里面,有一些障碍物,也就是说机器人不能通过这些障碍物。
若机器人当前位置为$(x, y)$,那么他下一个位置有可能为与当前格子曼哈顿距离为$1$的所有格子的任意1个。
也有可能停留在原来的位置$(x, y)$
求经过无限长的时间之后,这个机器人的位置在给定区域的概率。
结果用分数表示。
给定区域为$(x, y)$,满足 $x + y ≥ N - 1$
题目满足无障碍区域是连通的
当时在现场,和Au的差距就是罚时和这道题。
结论其实很简单,但是赛场上因为思维僵化就是想不出来。
首先对于每个点,初始都有一个权值。
角落的权值为$3$,边上但不是角落的权值为$4$,其他点权值为$5$。
我们对每个障碍点进行处理。障碍点的权值直接赋值为$0$,障碍周围的点权值减$1$
由于开不下那么大的二维数组,所以对那些被操作过的点,我们用map记录。
最后把区域内的权值累加,除以整个矩形的权值和即为答案。
#include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for (int i(a); i <= (b); ++i)
#define dec(i, a, b) for (int i(a); i >= (b); --i)
#define MP make_pair
#define fi first
#define se second typedef long long LL;
typedef pair <int, int> PII; const int dx[] = {1, 0, -1, 0};
const int dy[] = {0, 1, 0, -1}; int T;
int n, m; map < pair <int, int> , LL > mp;
int ca = 0; inline LL judge(int x, int y){
if ((x == 0 && y == 0) || (x == 0 && y == n - 1) || (x == n - 1 && y == 0) || (x == n - 1 && y == n - 1)) return 3;
if (x == 0 || x == n - 1 || y == 0 || y == n - 1) return 4;
return 5;
} inline bool check(int x, int y){
return (x + y) >= (n - 1);
} inline bool ok(int x, int y){
return x >= 0 && y >= 0 && x <= n - 1 && y <= n - 1;
} LL gcd(LL a, LL b){
return b == 0 ? a : gcd(b, a % b);
} int main(){ scanf("%d", &T);
while (T--){
scanf("%d%d", &n, &m);
LL all = 4 * 3 + (n - 2) * 4 * 4 + 5 * (n - 2) * (n - 2);
LL xx1 = 3, xx2 = 2 * (n - 2);
LL xx3 = n * (n + 1) / 2 - xx1 - xx2;
LL sum = xx1 * 3 + xx2 * 4 + xx3 * 5; mp.clear();
while (m--){
int x, y;
scanf("%d%d", &x, &y);
mp[MP(x, y)] = judge(x, y);
rep(i, 0, 3){
int nx = x + dx[i], ny = y + dy[i];
if (ok(nx, ny)){
++mp[MP(nx, ny)];
mp[MP(nx, ny)] = min(mp[MP(nx, ny)], judge(nx, ny));
}
} } for (auto cnt : mp){
int x = cnt.fi.fi, y = cnt.fi.se;
LL z = cnt.se;
if (check(x, y)) sum -= z;
all -= z;
} LL a1 = sum, a2 = all;
LL g = gcd(a1, a2);
a1 /= g, a2 /= g;
printf("Case #%d: %lld/%lld\n", ++ca, a1, a2);
} return 0;
}
HDU 6229 Wandering Robots(2017 沈阳区域赛 M题,结论)的更多相关文章
- hdu6229 Wandering Robots 2017沈阳区域赛M题 思维加map
题目传送门 题目大意: 给出一张n*n的图,机器人在一秒钟内任一格子上都可以有五种操作,上下左右或者停顿,(不能出边界,不能碰到障碍物).题目给出k个障碍物,但保证没有障碍物的地方是强联通的,问经过无 ...
- Infinite Fraction Path HDU 6223 2017沈阳区域赛G题题解
题意:给你一个字符串s,找到满足条件(s[i]的下一个字符是s[(i*i+1)%n])的最大字典序的长度为n的串. 思路:类似后缀数组,每次倍增来对以i开头的字符串排序,复杂度O(nlogn).代码很 ...
- hdu6223 Infinite Fraction Path 2017沈阳区域赛G题 bfs加剪枝(好题)
题目传送门 题目大意:给出n座城市,每个城市都有一个0到9的val,城市的编号是从0到n-1,从i位置出发,只能走到(i*i+1)%n这个位置,从任意起点开始,每走一步都会得到一个数字,走n-1步,会 ...
- HDU 6229 - Wandering Robots - [概率题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6229 转载: https://blog.csdn.net/Anna__1997/article/det ...
- 2017沈阳区域赛Infinite Fraction Path(BFS + 剪枝)
Infinite Fraction Path Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java ...
- HDU 6205 2017沈阳网络赛 思维题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6205 题意:给你n堆牌,原本每一堆的所有牌(a[i]张)默认向下,每次从第一堆开始,将固定个数的牌(b ...
- Heron and His Triangle 2017 沈阳区域赛
A triangle is a Heron’s triangle if it satisfies that the side lengths of it are consecutive integer ...
- 2017乌鲁木齐区域赛D题Fence Building-平面图的欧拉公式
这个题B站上面有这题很完整的分析和证明,你实在不懂,可以看看这个视频 https://www.bilibili.com/video/av19849697?share_medium=android&a ...
- 2017西安区域赛A / UVALive - 8512 线段树维护线性基合并
题意:给定\(a[1...n]\),\(Q\)次询问求\(A[L...R]\)的异或组合再或上\(K\)的最大值 本题是2017的西安区域赛A题,了解线性基之后你会发现这根本就是套路题.. 只要用线段 ...
随机推荐
- Kali 安装VMtools(最新)
老方法安装的VMtools不能进行主宿切换,下面是kali最新版安装VMtools的方法 一.换国内源&更新源 参考 Kali 2017更新源 二.安装VMtools apt-get inst ...
- VBA连接到SQL2008需要加上端口号
VBA连接到SQL2008需要加上端口号1433,比如 conn = "server=XXXX.XXXX.XXXX.XXXX,1433;provider=SQLOLEDB.1;databas ...
- HTML5——7个最牛的HTML5移动开发框架
月的iPhoneDevCamp上写成的.创建它的一个主要动力是基于一个几乎每一个单独的iPhone开发新手都要面对的简单事实:Objective-C是一个对Web开发人员来说非常陌生的环境,并且Web ...
- Python基础闯关失败总结
对列表进行创建切片增删改查 对列表进行创建 L1 = [] # 定义L1 为一个空列表 List() #创建List 空列表 对列表进行查询 L2 = ['a','b','c','d','a','e ...
- 1568: [JSOI2008]Blue Mary开公司(超哥线段树)
1568: [JSOI2008]Blue Mary开公司 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 1198 Solved: 418 Descr ...
- [转]using components in Cakephp 2+ Shell
<?php App::uses('AppShell', 'Console/Command'); App::uses('ComponentCollection', 'Controller'); A ...
- WebApi 跨域
http://www.cnblogs.com/lori/p/3557111.html http://bbs.csdn.net/topics/391020576
- OpenStack之Glance源码简析
Glance简介 OpenStack镜像服务器是一套虚拟机镜像发现.注册.检索. glance架构图: Glance源码结构: glance/api:主要负责接收响应镜像管理命令的Restful请求, ...
- python实现删除空文件夹 附源代码
前言:空文件夹虽然不占空间,但是有时候看着确实挺烦的(别误会,我不是强迫症!),所以写了一个用于删除当前目录下的空文件夹的小程序 环境:win7 64位:python2.7:IDE pycharm20 ...
- sqlserver2008链接服务器中执行存储过程配置过程
参考:http://www.cnblogs.com/ycsfwhh/archive/2010/12/15/1906507.html 1.双方启动MSDTC服务MSDTC(分布式交易协调器),协调跨多个 ...