zzulioj--1816--矩形(好题数学)

1816: 矩形

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 88  Solved: 24

SubmitStatusWeb Board

Description

小S和小D两个小雪参,在玩一个关于矩形的游戏以帮助他们学会怎么计算矩形的面积然后完成作业去打游戏(两个小雪参一起打游戏你怕不怕!)。他们约定每个人给出两个坐标,分别是两个矩形的左下角和右上角的坐标,他们的游戏规则很简单,就是看谁先找出来这两个矩形的覆盖的总面积大小。你的问题就是帮助他们给出正确答案。

Input

输入的第一行为一个整数T,代表样例的组数。

每组样例包含4个坐标(x,y),( -100000000<= x,y <= 100000000 )前两个是小S给出的矩形左下角和右上角的坐标,后面两个是小D给出来的坐标。

Output

输出两个矩形覆盖的总面积大小。

Sample Input

3-2 -2 2 2 -2 -2 2 20 0 1 1 0 0 2 2-2 -2 2 2 1 -3 3 -1

Sample Output

16419

HINT

Source

郑大第九届校赛正式赛


#include<stdio.h>
#include<string.h>
#include<queue>
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		double x1,y1,x2,x3,x4,y2,y3,y4;
		double x[4],y[4];
		scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
		x[0]=x1;x[1]=x2;x[2]=x3;x[3]=x4;
	    y[0]=y1;y[1]=y2;y[2]=y3;y[3]=y4;
	    sort(x,x+4);
		sort(y,y+4); 
		double s=fabs((x2-x1)*(y1-y2)+fabs(x3-x4)*(y3-y4));
		double l=fabs(x2-x1)+fabs(x3-x4)-fabs(x[3]-x[0]);
		double h=fabs(y1-y2)+fabs(y3-y4)-fabs(y[3]-y[0]);
		double s1=l*h;
		if(l<=0||h<=0)//判断两个矩形是否相离 
		printf("%.0lf\n",s);
		else
		printf("%.0lf\n",s-s1);
	}
	return 0;
}


posted @ 2015-12-08 19:45  上弦月307  阅读(481)  评论(0编辑  收藏  举报