zoukankan      html  css  js  c++  java
  • Problem : ZY的画像

    Problem : ZY的画像

    Time Limit: 1 Sec Memory Limit: 128 MB

    Description

    ZY的学生们想要覆盖一大张巨大的ZY画像,他们在之前已经用林衡的照片覆盖了一小部分画像(但林衡的照片不一定在画像上)现在他们要取一块足够大的布来将画像剩下的部分覆盖,问至少要多大的矩形的布才能覆盖剩下的画像。

    Input

    输入共两行。
    第一行四个整数,l1,r1,l2,r1,描述ZY画像左下和右上两个坐标(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
    HINT
    在这个问题中,我们有一个部分被另一个矩形覆盖的矩形。我们希望计算覆盖矩形其余部分的最小面积的矩形。
    在纸上画出一些例子后,我们发现有三种不同的情况。画像可能有四个角被覆盖,两个角被覆盖,或者少于两个角被覆盖。如果它有四个角被覆盖,那么它必须完全被覆盖,在这种情况下,面积为零。如果它有两个角被覆盖,那么我们就可以去掉两个画像区域的交叉点,剩下的区域就可以被完全覆盖了。如果它少于两个角,我们必须覆盖整个画像,因为其中一对对角将保持未覆盖状态。
    code:

    #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;
            }
        }
    }
    
  • 相关阅读:
    vue.js实战——.native修饰符
    vue.js实战——props数据验证(自定义构造器检测)
    vue.js实战——props单向数据流
    vue组件之嵌套
    vue非父子组件之间的通信——发布订阅模式,总线机制
    脚本加载优化方法
    文字溢出时,实现在末尾显示三个点省略效果
    1-stm32 gpio库函数
    2-C语言 排序算法
    电子工程师扫盲
  • 原文地址:https://www.cnblogs.com/ZhaoChongyan/p/11740433.html
Copyright © 2011-2022 走看看