题意:n个矩形的左上角和右下角坐标,问用4种颜色给所有矩形染色,相邻的矩形颜色不能相同,怎么染。边长是奇数。
题解:
可以把矩形的左下角左边分为 奇奇 奇偶 偶奇 偶偶
1+row%2*2+col%2 即是答案
下面证明一下这个公式
假设另一个矩形与当前矩形相邻,是纵向相邻
那么这个矩形坐标可写为(row-k,col-odd)
如果同颜色 那么就是
1+row%2*2+col%2=1+(row-k)%2*2+(col-odd)%2
假设col-odd是奇数
row%2*2=(row-k)%2*2+1
左面是偶数,右面是偶数+1 矛盾
假设col-odd是偶数
row%2*2+1=(row-k)%2*2 矛盾
假设横向相邻
1+row%2*2+col%2=1+(row-odd)%2*2+(col-k)%2
假设row-odd是奇数
col%2=2+(col-k)%2
很明显也是矛盾的
偶数同理
所以答案成立
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
int n,i;
scanf("%d",&n);
printf("YES\n");
int a,b,c,d;
for(i=1;i<=n;i++){
scanf("%d%d%d%d",&a,&b,&c,&d);
printf("%d\n",2*(abs(a)%2)+abs(b)%2);
}
return 0;
}