zl程序教程

您现在的位置是:首页 >  其它

当前栏目

1749. 阻挡广告牌 II

II
2023-09-27 14:27:32 时间

Powered by:NEFU AB-IN

Link

1749. 阻挡广告牌 II

  • 题意

    见原题

  • 思路

    只能用一块矩形盖住矩形被遮住的剩余部分,那么如果x, y其中一个未被全部遮住,那么面积只能还是割草机广告牌的面积
    其他情况分类讨论即可

  • 代码

    '''
    Author: NEFU AB-IN
    Date: 2022-03-30 21:45:16
    FilePath: \ACM\Acwing\1749.py
    LastEditTime: 2022-03-30 21:53:25
    '''
    
    
    def S(x1, y1, x2, y2):
        return (x2 - x1) * (y2 - y1)
    
    
    x1, y1, x2, y2 = map(int, input().split())
    X1, Y1, X2, Y2 = map(int, input().split())
    
    if X1 <= x1 and x2 <= X2 and Y1 <= y1 and y2 <= Y2:  #全覆盖
        print(0)
    elif X1 <= x1 and x2 <= X2 and Y1 <= y1 and y1 <= Y2 <= y2:  #x全覆盖,y上面未覆盖完全
        print(S(x1, y1, x2, y2) - S(x1, y1, x2, Y2))
    elif X1 <= x1 and x2 <= X2 and Y2 >= y2 and y1 <= Y1 <= y2:  #x全覆盖,y下面未覆盖完全
        print(S(x1, y1, x2, y2) - S(x1, Y1, x2, y2))
    elif Y1 <= y1 and y2 <= Y2 and X1 <= x1 and x1 <= X2 <= x2:  #y全覆盖,x右面未覆盖完全
        print(S(x1, y1, x2, y2) - S(x1, y1, X2, y2))
    elif Y1 <= y1 and y2 <= Y2 and X2 >= x2 and x1 <= X1 <= x2:  #y全覆盖,x左面未覆盖完全
        print(S(x1, y1, x2, y2) - S(X1, y1, x2, y2))
    else:
        print(S(x1, y1, x2, y2))