- Masha and two friends
- 题意:先给出一个n行m列的矩阵,这个矩阵是黑白交错的,左下角是白的,然后再给出一个矩阵。
- 这个矩阵就全部染成白色的,之后再给出一个矩阵,这个矩阵染成黑色的,数据范围是1e9。
- 问最后白色块和黑色块分别由多少?
- 坐标系中两矩形相交条件为:
- min(xa2,xb2)>=max(xa1,xb1)&&min(ya2,yb2)>=max(ya1,yb1)
- 其中:
- xa1<=xa2,ya1<=ya2
- xb1<=xb2,yb1<=yb2
-
#include<bits/stdc++.h> using namespace std; #define ll long long ll t,n,m,white,black; ll x[10],y[10],len1,len2; int main() { scanf("%lld",&t); while(t--) { scanf("%lld%lld",&n,&m); for(int i=1; i<=4; i++) scanf("%lld%lld",&x[i],&y[i]); white=(n*m+1)/2; len1=(x[2]-x[1]+1); len2=(y[2]-y[1]+1); if(len1%2&&len2%2&&x[1]%2==y[1]%2)white+=(len2*len1)/2; else white+=(len2*len1+1)/2; len1=(x[4]-x[3]+1); len2=(y[4]-y[3]+1); if(len1%2&&len2%2&&x[3]%2==y[3]%2)white-=(len2*len1+1)/2; else white-=(len2*len1)/2; x[5]=max(x[1],x[3]); x[6]=min(x[2],x[4]); y[5]=max(y[1],y[3]); y[6]=min(y[2],y[4]); if(x[5]<=x[6]&&y[5]<=y[6]) { len1=(x[6]-x[5]+1); len2=(y[6]-y[5]+1); if(len1%2&&len2%2&&x[5]%2==y[5]%2)white-=(len2*len1)/2; else white-=(len2*len1+1)/2; } printf("%lld %lld\n",white,n*m-white); } return 0; }
Masha and two friends-矩形相交
猜你喜欢
转载自blog.csdn.net/BePosit/article/details/85221041
今日推荐
周排行