传送门
由于曼哈顿距离在图上显示的是一个棱形,并不是很好看,所以我们将其旋转45°45°45°,转换成切比雪夫距离,这样就变成了一个正方形,正方形内部的点距离都不超过ddd,此时可以将正方形内部的点看成一个整体,涂成一个颜色,将其缩为一个点,让后现在问题就变成了你需要将每个点与其周围8个方向的点的颜色都不相同,这个就是四色定理,可以按照如下方式构造:
12121212...34343434...12121212...34343434......12121212...\\ 34343434...\\ 12121212...\\ 34343434...\\ ... 12121212...34343434...12121212...34343434......
不难发现符合上述限制,所以我们只需要将其转换成切比雪夫距离,让后根据奇偶判断一下即可。
#include<bits/stdc++.h>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define Mid (tr[u].l+tr[u].r>>1)
#define pb push_back
using namespace std;const int N=1000010,INF=0x3f3f3f3f,mod=1e9+7;
typedef long long LL;int n,m,d;void solve() {cin>>n>>m>>d;for(int i=1;i<=n;i++) {for(int j=1;j<=m;j++) {int x=(i+j+1000)/d,y=(i-j+1000)/d;//cout<<i<<' '<<j<<' '<<x<<' '<<y<<endl;//int digit=(x%2)*2+y%2;if(x%2==1) {if(y%2==1) printf("R");else printf("Y");} else {if(y%2==1) printf("G");else printf("B");}}puts("");}
}int main() {int _=1;while(_--) {solve();}}