在平面直角坐标系中,有两个矩形(保证不相交),然后给出第三个矩形,求这两个矩形没有被第三个矩形遮住的部分的面积。

输入格式:题目给出三个坐标,分别表示三个矩形的左下、右上坐标

题目:P4122 [USACO17DEC] Blocked Billboard B - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

分析: if 解决麻烦。数学思维:a,b矩形总的面积减over的,S=(x2-x1)*(y2-y1);

x,y表示坐标,

     x_over=max(0,min(p.x2,q.x2)-max(p.x1,q.x1));
     y_over=max(0,min(p.y2,q.y2)-max(p.y1,q.y1));

再x_over*y_over就是覆盖面积

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
#define N 1e5+5 
struct Fa
{
	int x1,y1,x2,y2;
};
int area(Fa r)
{
	return (r.x2-r.x1)*(r.y2-r.y1);
}
int output(Fa p,Fa q){
	int x_over=max(0,min(p.x2,q.x2)-max(p.x1,q.x1));
	int y_over=max(0,min(p.y2,q.y2)-max(p.y1,q.y1));
	return x_over*y_over;
}
int main(){
	
	ios::sync_with_stdio(false);
	
	Fa a,b,c;
	cin>>a.x1>>a.y1>>a.x2>>a.y2;
	cin>>b.x1>>b.y1>>b.x2>>b.y2;
	cin>>c.x1>>c.y1>>c.x2>>c.y2;
	 cout<<area(a)+area(b)-output(a,c)-output(b,c)<<"\n";
	//cout<<cnt<<"\n"; 
	return 0;
} 

开始就应该认真滴

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值