• Problem: [USACO2018 Jan]Blocked Billboard II


    Problem: [USACO2018 Jan]Blocked Billboard II

    Time Limit: 1 Sec Memory Limit: 128 MB

    Description

    奶牛Bassie想要覆盖一大块广告牌,她在之前已经覆盖了一小部分广告牌(但覆盖的这块面积不一定在广告牌上)
    现在她要取一块足够大的布来将剩下的部分覆盖,问至少要多大的矩形的布才能覆盖剩下的广告牌。

    Input

    输入共两行。
    第一行四个整数,l1,r1,l2,r1,描述广告牌左下和右上两个坐标(l1,r1)和(l2,r2)。
    第二行四个整数,x1,y1,x2,y2,描述覆盖的位置的左下和右上两个坐标(x1,y1)和(x2,y2)。
    所有数值都在-1000~1000范围内。

    Output

    一行一个整数,表示需要的最小的矩形的布。

    Sample Input

    2 1 7 4
    5 -1 10 3

    Sample Output

    15
    代码如下·

    #include<stdio.h>
    int l1,r1,l2,r2,x1,y1,x2,y2,sum,a,b,c,d;
    int main() {
        scanf("%d %d %d %d %d %d %d %d",&l1,&r1,&l2,&r2,&x1,&y1,&x2,&y2);
        if(l1>x1&&r1>y1) {sum++;a=1;}
        if(l1>x1&&r2<y2) {sum++;b=1;}
        if(l2<x2&&r1>y1) {sum++;c=1;}
        if(l2<x2&&r2<y2) {sum++;d=1;}
        switch(sum) {
            case 0:{
                printf("%d",(l2-l1)*(r2-r1));
                break;
            }
            case 1:{
                printf("%d",(l2-l1)*(r2-r1));
                break;
            }
            case 2:{
                if(a&&b) printf("%d",(l2-x2)*(r2-r1));
                if(a&&c) printf("%d",(l2-l1)*(r2-y2));
                if(b&&d) printf("%d",(l2-l1)*(y1-r1));
                if(c&&d) printf("%d",(x1-l1)*(r2-r1));
                break;
            }
            case 4:{
                printf("%d",0);
                break;
            }
        }
    }
    
  • 相关阅读:
    mysql_example
    windows 下 解决 go get 或 dep init 更新不了问题
    golang反射
    Windows下修改hosts并且让他立即生效
    Windows不重启就使环境变量修改生效
    swoole进程-2
    swoole进程
    swoole协程
    区间素数筛法
    AOJ
  • 原文地址:https://www.cnblogs.com/ZhaoChongyan/p/11740445.html
Copyright © 2020-2023  润新知