分类讨论(Python)

https://www.nowcoder.com/practice/36892cfda60144bb9eb8b20f2f61e0b6

思路:分类讨论

代码:

import sys
input = lambda: sys.stdin.readline().strip()

import math
inf = 10 ** 18

def I():
    return input()

def II():
    return int(input())

def MII():
    return map(int, input().split())

def GMI():
    return map(lambda x: int(x) - 1, input().split())

def LI():
    return input().split()

def LII():
    return list(map(int, input().split()))

def LFI():
    return list(map(float, input().split()))

fmax = lambda x, y: x if x > y else y
fmin = lambda x, y: x if x < y else y
isqrt = lambda x: int(math.sqrt(x))

'''

'''

def solve():
    n = II()
    x1, y1 = MII()
    x2, y2 = MII()
    # 预处理,左边的点y小,右边的点y大
    if y1 > y2:
        x1, x2 = x2, x1
        y1, y2 = y2, y1
    # 如果相同,必然合法
    if x1 == x2 and y1 == y2:
        print("YES")
        return
    # 如果不相同,并且右边的点已经在终点,不合法
    if (x2, y2) == (2, n):
        print("NO")
        return
    # 如果在同一行/同一列,无法放置障碍物使得在第一步之后两者在同一位置
    if x1 == x2 or y1 == y2:
        print("NO")
        return
    # 如果列相差大于1,也无法放置障碍物使得在第一步之后两者在同一位置
    if y2 - y1 > 1:
        print("NO")
        return
    # 其他的2 * 2对角情况可以满足条件,除了以下这种情况
    # 当(x2, y2)就在(2, n - 1)的位置时,由于题目说了不能在终点放置障碍物,所以说这种情况不合法
    if y2 + 1 == n:
        print("NO")
        return
    # 除此之外都是合法情况
    print("YES")

t = 1
# t = II()
for _ in range(t):
    solve()
#每日一题挑战#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务