D 现在是,学术时间 (II)

这题没啥花里胡哨的

就是计算面积时注意别写错符号变量啥的

思路是

矩形面积=长*宽(长:x大-x小 ; 宽:y大-y小)

不想判断哪个变量大还是小就活用max()min()函数,或者直接相减时用绝对值abs()函数

两矩形并集面积得算 (可以看下我代码,这里容易写乱)

两矩形交集面积为两矩形面积之和减去并集面积 s1+s2-s并

第二个矩形未知点的选取是第一个矩形其中的一个端点

至于选取哪个,写数组把四个端点记录下来,用一个变量每次比较判断一下结果就行(我没用max变量,会与max函数冲突)

#include <bits/stdc++.h>
using namespace std;

int main() {
    int x, y, xp, yp, t, s1, s2, s3, s4, s5;
    double res, max1;
    cin>>t;
    while (t--) { // 注意 while 处理多个 case
        cin >> x >> y >> xp >> yp;
        max1=0;
        s1=x*y;
        
        int xm[]={0,0,x,x};
        int ym[]={0,y,0,y};
        
        for(int i=0;i<4;i++){
            s2=abs(xp-xm[i])*abs(yp-ym[i]);
            s3=s1+s2;
            s4=abs(min(x,max(xp,xm[i]))-max(min(xp,xm[i]),0))*abs(min(y,max(yp,ym[i]))-max(min(yp,ym[i]),0));
            s5=s3-s4;
            res=s4*1.0/s5;
            if(max1<res){
                max1=res;
            }
        }
        cout<<max1<<endl;
    }
}



class HelloWorld {
    public static void main(String[] args) {
        System.out.println("还没写,反正也差不多"); 
    }
}