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("还没写,反正也差不多");
}
}