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 ...
随机推荐
- vue 3 学习笔记 (七)——vue3 中 computed 新用法
vue3 中 的 computed 的使用,由于 vue3 兼容 vue2 的选项式API,所以可以直接使用 vue2的写法,这篇文章主要介绍 vue3 中 computed 的新用法,对比 vue2 ...
- vue-ref指令
$refs是数组
- [spring-core]作用域
本文试图从原理上讲解Spring IoC容器的作用域机制,建议对着源码阅读,事半功倍. 0 引入问题 当我们谈到Spring作用域的时候,自然而然会想到如下作用域(来自spring-core官方文档) ...
- Flink 是如何统一批流引擎的
关注公众号:大数据技术派,回复"资料",领取1000G资料. 本文首发于我的个人博客:Flink 是如何统一批流引擎的 2015 年,Flink 的作者就写了 Apache Fli ...
- CF 786 E ALT
CF 786 E ALT 一个居民有两个选择:分配一只宠物,路上都有宠物 一个守卫有两种选择:分配一只宠物,不分配宠物 我们找一个原点,到每个居民都有一条边,表示是否给他宠物 从每个居民向他路上的守卫 ...
- Codeforces Round #732 (Div.1) 题解
实在是打击人信心的一场比赛啊--一不注意就掉了 50+ 分,rating 没了啊/ll/dk/wq/kk A Weak pretest!!!!!11 /fn/fn/fn 一个很显然的注意点是在交换前后 ...
- Codeforces 79D - Password(状压 dp+差分转化)
Codeforces 题目传送门 & 洛谷题目传送门 一个远古场的 *2800,在现在看来大概 *2600 左右罢( 不过我写这篇题解的原因大概是因为这题教会了我一个套路罢( 首先注意到每次翻 ...
- python12类
self 表示类里面的对象的引用 python一般不需要去解决内存管理,解释器会进行自动给回收 #类鱼类之间空格两行,前面的函数里面也是两行,类里面的方法个一行 class Cat(object): ...
- dlang 安装
刷论坛看到TIOBE排行榜,排名靠前的基本是C.C++.java.python之类的语言,常用的R语言近几年排名一路走高,前20基本变化不大. 后面发现第二十九位居然有个叫做D的语言,看了下和C语法很 ...
- window文件挂载到linux