そして、二つの長方形の領域

今日では、彼のチームメイトは、それを共有し、私は非常に良いアイデアを与えました

第一矩形2で同定された4つの点を考えると二つの矩形交差しない場合、それは注文する必要があり、座標xまたはyの1つのまたはいずれかの行が、直線状に整列され、これがどこにあるエリアと二つの領域と

第二:交差点場合、第一の領域を見つけ、交差点の面積を減算4内の2つの特定の点の間の2つの交点は、後で交差を知って、それによって、順序付けられた発現矩形

質問を投稿

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
	int t;
	cin >> t;
	for(int i = 0; i < t; i++){
		ll x[4], y[4];
		scanf("%lld %lld %lld %lld %lld %lld %lld %lld", &x[0], &y[0], &x[1], &y[1], &x[2], &y[2], &x[3], &y[3]);
		ll k = (y[2] - y[3]) * (x[3] - x[2]) + (y[0]-y[1]) * (x[1] - x[0]);
		if(x[1] <= x[2] || x[0] >= x[3] || y[1] >= y[2] || y[0] <= y[3]){
			printf("%lld\n", k);
		}
		else {
			sort(x, x+4);
			sort(y, y+4);
			printf("%lld\n", k - (x[2] - x[1]) * (y[2] - y[1]));
		}
	}
	return 0;
}

 

公開された143元の記事 ウォン称賛11 ビュー8211

おすすめ

転載: blog.csdn.net/weixin_43701790/article/details/103229788