牛客网2019技术类题解腾讯(2)

腾讯(2) 

#include 
using namespace std;
long long x[8],y[8];
int main(){
	int T;
	long long n,m,white,black,change,a,b,c,d;
	scanf("%d",&T);
	while(T--){
		scanf("%lld%lld",&n,&m);
		white=(n*m+1)/2;
		black=n*m-white;
		for(int i=0;i<=3;i++){
			scanf("%lld%lld",&x[i],&y[i]);
		}
		if((x[0]+y[0])&1){//第一个长方形左下角是黑色 
			change=((x[1]-x[0]+1)*(y[1]-y[0]+1)+1)/2;//第一个长方形原有黑色的块数 
		}
		else
			change=(x[1]-x[0]+1)*(y[1]-y[0]+1)/2;
		white+=change;
		black-=change;
		if((x[2]+y[2])&1)//第二个长方形左下角是黑色 
			change=(x[3]-x[2]+1)*(y[3]-y[2]+1)/2;//第二个长方形原有白块数
		else
			change=((x[3]-x[2]+1)*(y[3]-y[2]+1)+1)/2; 
		white-=change;
		black+=change;
		a=max(x[0],x[2]);
		b=max(y[0],y[2]);
		c=min(x[1],x[3]);
		d=min(y[1],y[3]);
		if(c

 

你可能感兴趣的:(企业真题刷题,#矩阵操作,#边界条件考察,刷题,2019真题)