【Atcoder】CODE FESTIVAL 2017 qual A D - Four Coloring
【题意】给定h,w,d,要求构造矩阵h*w满足任意两个曼哈顿距离为d的点都不同色,染四色。
【算法】结论+矩阵变换
【题解】
曼哈顿距离是一个立着的正方形,不方便处理。d=|xi-xj|+|yi-yj|
将矩阵旋转45°,转为切比雪夫距离(正方形)。d=max{|xi-xj|,|yi-yj|}

(图片来自Atcoder editorial)
定义旋转后的每个点坐标为(x-y,x+y)。(实际处理中x-y+10000避免负数)
将新坐标按d划分区域,就可以发现每个点必须和八连通的块异色,如下图。

(图片来自Atcoder editorial)
八连通染四色的方法:color(x%2+y%2*2),本质上是00,01,10,11四色,这样八连通自然就不同了(如上图),为了0~3就用0+0,0+2,1+0,1+2来表示。
另外,此题在d为奇数时有结论,直接按副对角线染色(假设当前颜色1,走d步后达到的一定是2或4)
#include<cstdio>
int h,w,d;
char s[]="RGBY";
int main(){
scanf("%d%d%d",&h,&w,&d);
if(d&){
for(int i=;i<h;++i){
for(int j=;j<w;++j)putchar(s[i+j&]);
putchar();
}
}else{
for(int i=;i<h;++i){
for(int j=;j<w;++j){
int x=i+j,y=i-j+;
putchar(s[(x/d&)+(y/d&)*]);
}
putchar();
}
}
return ;
}
【Atcoder】CODE FESTIVAL 2017 qual A D - Four Coloring的更多相关文章
- 【Atcoder】CODE FESTIVAL 2017 qual C D - Yet Another Palindrome Partitioning
[题意]给定只含小写字母的字符串,要求分割成若干段使段内字母重组顺序后能得到回文串,求最少分割段数.n<=2*10^5 [算法]DP [题解]关键在于快速判断一个字符子串是否合法,容易发现合法仅 ...
- 【AtCoder】CODE FESTIVAL 2017 qual A
A - Snuke's favorite YAKINIKU -- #include <bits/stdc++.h> #define fi first #define se second # ...
- 【AtCoder】CODE FESTIVAL 2017 qual B
最近不知道为啥被安利了饥荒,但是不能再玩物丧志了,不能颓了 饥荒真好玩 A - XXFESTIVAL CCFESTIVAL #include <bits/stdc++.h> #define ...
- 【AtCoder】CODE FESTIVAL 2017 qual C
A - Can you get AC? No #include <bits/stdc++.h> #define fi first #define se second #define pii ...
- 【AtCoder】CODE FESTIVAL 2016 qual A
CODE FESTIVAL 2016 qual A A - CODEFESTIVAL 2016 -- #include <bits/stdc++.h> #define fi first # ...
- 【AtCoder】CODE FESTIVAL 2016 qual B
CODE FESTIVAL 2016 qual B A - Signboard -- #include <bits/stdc++.h> #define fi first #define s ...
- 【AtCoder】CODE FESTIVAL 2016 qual C
CODE FESTIVAL 2016 qual C A - CF -- #include <bits/stdc++.h> #define fi first #define se secon ...
- 【AtCoder】CODE FESTIVAL 2017 Final
A - AKIBA 模拟即可 代码 #include <bits/stdc++.h> #define fi first #define se second #define pii pair ...
- CODE FESTIVAL 2017 qual A D Four Coloring(补题)
这题看了好几天才看懂,一直误解题解中的d * d了 题解中说把大的格子划分成d * d的方格,我划分的时候把格子当作点来算的,一直觉得那明明是(d-1) * (d-1),昨天刚反映过来 思路:把格子旋 ...
随机推荐
- Calculator 2
github地址:https://github.com/YooRarely/object-oriented.git 新增: 计算类(拥有计算功能) 采用符号优先级计算方法 对符号不匹配的如 -2 ,自 ...
- OSG学习:自动对齐节点示例
/********************************************************** *Write by FlySky *zzuxp@163.com http://w ...
- 【Docker 命令】- pull命令
docker pull : 从镜像仓库中拉取或者更新指定镜像 语法 docker pull [OPTIONS] NAME[:TAG|@DIGEST] OPTIONS说明: -a :拉取所有 tagge ...
- 第一章 Spring 概述
Spring框架的生态,已经成了JavaWeb开发的事实标准 以IOC与AOP为基础,提供了一整套JavaWeb的开发解决方案 在需要引入功能前,先看看有没有Spring的实现,或者其他框架,看看能否 ...
- 【bzoj4721】[Noip2016]蚯蚓 乱搞
题目描述 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓.蛐 ...
- 前台界面(2)---CSS 样式
目录 1. 内联样式 2. 层叠样式表CSS 2.1. 类选择器 2.1.1. 颜色设置 2.1.2. 字号设置 2.1.3. CSS边框属性 2.1.4. 设置背景颜色 2.1.5. 设置布局边框 ...
- javascript标准对象与包装对象
javascript标准对象与包装对象 标准对象 在JavaScript的世界里,一切都是对象. 但是某些对象还是和其他对象不太一样.为了区分对象的类型,我们用typeof操作符获取对象的类型,它总是 ...
- I/O复用----select
2018-07-31 (星期二)I/O复用: 一个应用程序通常需要服务一个以上的文件描述符. 例如stdin,stdout,进程间通信以及若干文件进行I/O,如果不借助线程的话,(线程通常 ...
- HDU 5650 异或
so easy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...
- Codeforces Round #340 (Div. 2) D
D. Polyline time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...