Code Festival 2017 qualA D Four Coloring[构造]
2017-09-26 14:18
246 查看
Description
题意是给定一个H∗W的网格,和一个整数d。要求将这些网格染成四种颜色,使得曼哈顿距离恰好为d的点对的颜色不同。
Solution
看到曼哈顿距离就要想到和切比雪夫距离得转换啊。。d=MAX(|Xi−Xj|,|Yi−Yj|)首先将棋盘翻转45度。会发现在一个d∗d的网格中的所有点的切比雪夫距离都不等于d。
那么就相当于对一个棋盘染色,使得所有联通的格子颜色不同。
因为四色定理,所以这是一定有解的。
并且这是一个二维平面网格,只要按顺序染色就好了。
#include <bits/stdc++.h> using namespace std; const int N = 2010; int n, m, d, c1, c2, p1, p2; int ans ; char c; char ch[4] = {'R', 'Y', 'G', 'B'}; int main(void) { freopen("1.in", "r", stdin); scanf("%d%d%d", &n, &m, &d); for (int i = -1010; i <= 1010; i += d) { c1 ^= 1; for (int j = -1010; j <= 1010; j += d) { c2 ^= 1; for (int x = 0; x < d; x++) for (int y = 0; y < d; y++) { c = ch[c1 << 1 | c2]; if (i + x + j + y < 0 || i + x - j - y < 0) continue; ans[(i + x + j + y) >> 1][(i + x - j - y) >> 1] = c; } } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) putchar(ans[i][j]); putchar('\n'); } return 0; }
相关文章推荐
- Code Festival 2017 qualA E-Modern Painting
- [Atcoder CODE FESTIVAL 2017 qual C]D - Yet Another Palindrome Partitioning 状压DP
- Atcoder CODE FESTIVAL 2017 qual C 总结+ABCD题解
- CODE FESTIVAL 2017 qual A C
- atcoder CODE FESTIVAL 2017 qual A 手速(雾)赛
- atcoder/CODE FESTIVAL 2017 qual B/B(dfs染色判断是否为二分图)
- 【AtCoder CODE FESTIVAL 2017 qual C】D - Yet Another Palindrome Partitioning (状压dp 字符串)
- 【Atcoder】CODE FESTIVAL 2017 qual A D - Four Coloring
- B - Palindrome-phobia(CODE FESTIVAL 2017 Final)
- 【二分图染色】AtCoder CODE FESTIVAL 2017(qual B)C[3 Steps]题解
- 【题解】Popping Balls AtCoder Code Festival 2017 qual B E 组合计数
- [DP]Atcoder CODE FESTIVAL 2017 Final (Parallel) D - Zabuton
- Atcoder CODE FESTIVAL 2017 Final 简要题解
- CODE FESTIVAL 2017 qual C- A-B-C 总结
- 找规律 B - Palindrome-phobia(CODE FESTIVAL 2017 Final)
- [构造][杂题]Helvetic Coding Contest 2017. H Fake News && CODE FESTIVAL 2016 Grand Final . G FESTIVAL
- Atcoder CODE FESTIVAL 2017 qual C D - Yet Another Palindrome Partitioning
- 【dfs+理解题意+构造】【待重做】codeforces E. Ice cream coloring
- CODE FESTIVAL 2017 qual B:C - 3 Steps 并查集判二分图、二分图性质
- Google Code Jam 2017 资格赛