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 ...
随机推荐
- es基本概念
电商实时数据分析平台需要学些什么? [运营指标,流量指标,销售转化指标,客户价值指标,商品指标,营销指标,风险控制指标,市场竞争指标]等电商指标数据. 检索,数据更新,排序,分词,query等缓存机 ...
- 洛谷 P6570 - [NOI Online #3 提高组] 优秀子序列(集合幂级数+多项式)
洛谷题面传送门 首先 \(3^n\) 的做法就不多说了,相信对于会状压 dp+会枚举子集的同学来说不算困难(暴论),因此这篇博客将着重讲解 \(2^nn^2\) 的做法. 首先如果我们把每个 \(a_ ...
- 3个CSS动画库,比Animated还好用,让你的网站酷炫起来
本文首发于https://www.1024nav.com/tools/css-animation-library 转载请注明出处 整理了日常前端开发中常用的css动画库,让你的网页动起来,可以在生成中 ...
- 【R】如何去掉数据框中包含非数值的行?
目录 1. 去掉指定列中包含NA/Inf/NaN的行 2. 去掉指定列中包含其他乱七八糟字符串的行 3. 去掉整个数据框中包含非数值的行 只包含NA.NaN和Inf的情况 针对其他字符情况 4. 总结 ...
- Shell 变量嵌套
实现:eval 1 a="indv1" 2 indv1="Sus1" 3 4 eval tmp='$'$a 5 echo $tmp //这里 echo 返回值为 ...
- sersync+rsync进行数据同步
一:环境 操作系统环境:redhat6.6 内核版本:2.6.32-358.el6.x86_64 rsync server:192.168.2.3(部署rsync server) rsync clie ...
- Excel-同个工作簿中,多个工作表中有格式一致的表格,做汇总透视合并信息
12.同个工作簿中,多个工作表中有格式一致的表格,做汇总透视合并信息 在工作簿中新建一个工作表-汇总表->按Alt+D+P调出数据透视表和数据透视图向导->选择"多重合并计算数据 ...
- 备忘录:关于.net程序连接Oracle数据库
目录 关于使用MSSM访问Oracle数据库 关于. net 程序中连接Oracle数据库 志铭-2021年12月7日 21:22:15 关于使用MSSM访问Oracle数据库 安装访问接口组件:Or ...
- A Child's History of England.44
At this period of his reign, when his troubles seemed so few and his prospects so bright, those dome ...
- day05 django框架之路由层
day05 django框架之路由层 今日内容概要 简易版django请求声明周期流程图(重要) 路由匹配 无名有名分组 反向解析 无名有名解析 路由分发 名称空间 伪静态 虚拟环境 简易版djang ...