CF1547A Shortest Path with Obstacle 题解
Content
给定两个在二维平面上的网格 \(A(x_A,y_A)\) 和 \(B(x_B,y_B)\),另外,还有一个不可通过的网格 \(F(x_F,y_F)\)。你需要求出在不经过 \(F\) 的情况下,通过若干次上下左右的移动,从 \(A\) 走到 \(B\) 的最短路径长度。
数据范围:\(t\) 组数据,\(1\leqslant t\leqslant 10^4\),\(1\leqslant x_A,y_A,x_B,y_B,x_F,y_F\leqslant 1000\)。
Solution
我们不妨先抛开 \(F\) 不谈,先想想,如果直接问你从 \(A\) 走到 \(B\) 的最短路径的话,显然答案就是 \(|x_A-x_B|+|y_A-y_B|\)(顺便说一句,这种距离的表示就是著名的曼哈顿距离)。
然后我们再考虑一下,\(F\) 在什么情况下会影响到原来的答案呢?
如果 \(A,B\) 即不在同一行也不在同一列,那么显然,\(F\) 是并不会影响上面的答案的,因为这样我们可以任意选择转弯的位置以避开 \(F\) 点而不影响最终的最短路径长度。
如果 \(A,B\) 在同一行,即 \(x_A=x_B\),设 \(y_{\min}=\min\{y_A,y_B\}\),\(y_{\max}=\max\{y_A,y_B\}\)。此时的 \(F\) 如果 \(x_F=x_A=x_B\) 且 \(y_{\min}<y_F<y_{\max}\),那么我们需要绕过这个点,从而比原来的路径要多走 \(2\) 个单位的距离。否则 \(F\) 也不会影响最终的答案。
如果 \(A,B\) 在同一列,即 \(y_A=y_B\),设 \(x_{\min}=\min\{x_A,x_B\}\),\(x_{\max}=\max\{x_A,x_B\}\)。此时的 \(F\) 如果 \(y_F=y_A=y_B\) 且 \(x_{\min}<x_F<x_{\max}\),那么我们需要绕过这个点,从而比原来的路径要多走 \(2\) 个单位的距离。否则 \(F\) 也不会影响最终的答案。
那么这道题目就做完了。
Code
int main() {
MT {
int xa = Rint, ya = Rint, xb = Rint, yb = Rint, xf = Rint, yf = Rint;
if(xa == xb && xa == xf && yf >= min(ya, yb) && yf <= max(ya, yb)) println(abs(yb - ya) + 2);
else if(ya == yb && ya == yf && xf >= min(xa, xb) && xf <= max(xa, xb)) println(abs(xb - xa) + 2);
else println(abs(xb - xa) + abs(yb - ya));
}
return 0;
}
CF1547A Shortest Path with Obstacle 题解的更多相关文章
- Shortest Path(思维,dfs)
Shortest Path Accepts: 40 Submissions: 610 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: ...
- 【ZOJ2760】How Many Shortest Path
How Many Shortest Path 标签: 网络流 描述 Given a weighted directed graph, we define the shortest path as th ...
- 【CF938G】Shortest Path Queries(线段树分治,并查集,线性基)
[CF938G]Shortest Path Queries(线段树分治,并查集,线性基) 题面 CF 洛谷 题解 吼题啊. 对于每个边,我们用一个\(map\)维护它出现的时间, 发现询问单点,边的出 ...
- Codeforces Beta Round #3 A. Shortest path of the king 水题
A. Shortest path of the king 题目连接: http://www.codeforces.com/contest/3/problem/A Description The kin ...
- HDU 5636 Shortest Path 暴力
Shortest Path 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5636 Description There is a path graph ...
- HDU4725:The Shortest Path in Nya Graph(最短路)
The Shortest Path in Nya Graph Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- CF938G Shortest Path Queries 和 CF576E Painting Edges
这两道都用到了线段树分治和按秩合并可撤销并查集. Shortest Path Queries 给出一个连通带权无向图,边有边权,要求支持 q 个操作: x y d 在原图中加入一条 x 到 y 权值为 ...
- 1129. Shortest Path with Alternating Colors
原题链接在这里:https://leetcode.com/problems/shortest-path-with-alternating-colors/ 题目: Consider a directed ...
- leetcode_1293. Shortest Path in a Grid with Obstacles Elimination_[dp动态规划]
题目链接 Given a m * n grid, where each cell is either 0 (empty) or 1 (obstacle). In one step, you can m ...
随机推荐
- 洛谷 P3994 高速公路(斜率优化)
题目链接 题意:给出一棵树,\(1\) 号点为根,边上有边权. 每个点有两个参数 \(p_i,q_i\) 如果你想从 \(i\) 号点到与其距离为 \(d\) 的 \(j\) 号点,那么你需花费 \( ...
- 洛谷 P3704 [SDOI2017]数字表格(莫比乌斯函数)
题面传送门 题意: 求 \[\prod\limits_{i=1}^n\prod\limits_{j=1}^mfib_{\gcd(i,j)} \] \(T\) 组测试数据,\(1 \leq T \leq ...
- 44-Count and Say
Count and Say My Submissions QuestionEditorial Solution Total Accepted: 79863 Total Submissions: 275 ...
- 单元测试在Unity中的应用
项目描述:简单演示单元测试在Unity中的应用 项目地址:UnityTestRunner_Tutorial - SouthBegonia 项目版本:2020.3.20f1 项目用法:打开就用,代码都放 ...
- SQLITE_BTREE_H
sqlite3.c, 237436行 = 全部源文件,找东西比多文件查找方便多了:-),字符串查找一点都不慢. 不要太害怕,SQLite说它的代码里有非常多是用来做数据完整性检查和测试的.但愿B树,虚 ...
- Vue相关,Vue JSX
JSX简介 JSX是一种Javascript的语法扩展,JSX = Javascript + XML,即在Javascript里面写XML,因为JSX的这个特性,所以他即具备了Javascript的灵 ...
- Excel 数据验证:分类选择及输入限制
几个简单设置让你的数据不再出错 如何快速选择某一大类中的细分小类 多级菜单 注意:引用可以创建二级目录,但是引用前应先用公式定义名称,然后引用,引用只能在本sheet操作.
- Linux学习 - 目录表
目录名 作用 权限 说明 /bin/ 存放系统命令的目录 所有用户 存放在/bin/下的命令单用户模式下也可以执行 /sbin/ 保存和系统环境设置相关的命令 root ...
- OSGI 理论知识
下面列出了主要的控制台命令: 表 1. Equinox OSGi 主要的控制台命令表 类别 命令 含义 控制框架 launch 启动框架 shutdown 停止框架 close 关闭.退出框架 exi ...
- win10安装两台mysql-5.7.31实例
1. 下载 mysql5.7.31 压缩包: (1)百度云下载: 链接:https://pan.baidu.com/s/1jgxfvIYzg8B8ahxU9pF6lg 提取码:fiid (2)官网下载 ...