AcWing 1749. 阻挡广告牌 II

AcWing 1749. 阻挡广告牌 II

题目链接

题目描述:
奶牛贝茜曾经从农场中向外看去,可以看到两个刊登着美味的牛饲料广告的广告牌,这令她非常满意。
不幸的是,其中一个广告牌最近已更新,现在刊登着广告“农民拉里的割草机”。
但是贝茜可不喜欢割草机,这些割草机只会把她爱吃的草割的一干二净。
幸运的是,剩下的牛饲料广告牌位于割草机广告牌的前面,有可能将其遮挡住。
贝茜希望这个讨厌的割草机广告牌能够完全从自己的视线中消失,并为此制定了一个冒险计划。
她计划从谷仓里偷一个大的矩形防水布,并在深夜偷偷溜走,用它覆盖割草机广告牌的其余部分,使得她能完全看不到割草机广告牌。
给定两个广告牌的位置,请帮助贝茜计算她所需要的防水布的最小面积。
由于谷仓中只有矩形的防水布,因此贝茜发现为了将割草机广告牌完全遮盖,所需的防水布面积可能会大于割草机广告牌的裸露面积,如下例所示。
防水布在放置时,其边必须与广告牌的边平行,即不能倾斜放置。

输入格式
第一行包含四个整数 x1,y1,x2,y2,其中 (x1,y1) 和 (x2,y2) 表示割草机广告牌的左下角和右上角坐标。
第二行按照如上形式,包含四个整数,表示牛饲料广告牌的左下角和右上角坐标。
牛饲料广告牌可能完全遮盖了割草机广告牌,或部分遮盖了割草机广告牌,也可能完全没有遮盖割草机广告牌。

输出格式
输出用来遮盖割草机广告牌的防水布的最小面积。

数据范围
−1000≤x1,y1,x2,y2≤1000
输入样例:

2 1 7 4
5 -1 10 3

输出样例:

15

样例解释
虽然牛饲料广告牌遮盖住了割草机广告牌的右下角的一部分,但这并没有起到作用。
想要完全遮盖割草机广告牌,仍然需要一块和它尺寸相同的防水布。

AC代码

// 分类讨论饲料对于割草机的覆盖即可
// 头皮发麻
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int x1,x2,y1,y2; //割草机坐标
    int xa,xb,ya,yb; //饲料坐标
    int s;
    cin>>x1>>y1>>x2>>y2;
    cin>>xa>>ya>>xb>>yb;
    //割草机完全被覆盖
    if(xa<=x1&&xb>=x2&&ya<=y1&&yb>=y2) s=0;
    //割草机上边被覆盖
    else if(xa<=x1&&xb>=x2&&ya>=y1&&ya<=y2&&yb>=y2) s=(x2-x1)*(ya-y1);
    //割草机下边被覆盖
    else if(xa<=x1&&xb>=x2&&ya<=y1&&yb>=y1&&yb<=y2) s=(x2-x1)*(y2-yb);
    //割草机左边被覆盖
    else if(ya<=y1&&yb>=y2&&xa<=x1&&xb>=x1&&xb<x2) s=(y2-y1)*(xb-x2);
    //割草机右边被覆盖
    else if(ya<=y1&&yb>=y2&&xb>=x2&&xa>=x1&&xa<=x2) s=(y2-y1)*(xa-x1);
    //割草机只被覆盖了角落或者未被覆盖
    else s=(x2-x1)*(y2-y1);
    cout<<abs(s)<<endl;
    return 0;
}

如果觉得写的还不错,点个赞吧 ^ v ^

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

稚皓君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值