彩色立体图
测试数据来自 system/1963
描述
小渊是个聪明的孩子,他经常会给周围的小朋友们讲些自己认为有趣的内容。最近,他准备给小朋友们讲解,并请你帮他在平面上画出来。
小渊有一块面积为的矩形区域,上面有个边长为1的格子,每个格子上堆了一些同样大小的积木(积木的长宽高都是1)。为了方便阐述,我们假设这块区域是坐北朝南的。
小渊想请你打印出这些格子的立体图。我们定义每个积木为如下格式,并且不会做任何翻转旋转,只会严格以这一种形式摆放:
+-------+
/5\7777'/|
/55.*'88/9|
/.6666\8/9/|
+-------+9.0|
|\44444/|:0|
|1\444/3|b*0|
|11\4/33|b:|
|111X333|b'a+
|11/2\33|/a/
|1/222\3|a/
|/22222|/
+-------+
在良好的光学试验环境下,小渊将T束平行光同时照射在这些积木上。这些平行光首先满足一定是红绿蓝三基色之一。其次若建立三维直角坐标系(x,y,z),其中z方向以上为正方向,x方向以东为正方向,y方向以南为正方向。则入射光的方向总可以表示为的形式。具体来说,我们最多会考虑9个方向的不同平行光,它们的入射方向可以被描述为:
西北方度仰角~~正北方45度仰角~~东北方度仰角
正西方45度仰角~~垂直从上入射光~~正东方45度仰角
西南方度仰角~~正南方45度仰角~~东南方度仰角
其中。
对于每一个单位积木来说,可以打印出来的三个表面被分为12个小三角形,如上图所示(图中用符号 分别表示了12个小三角形的区域)。
可以证明,。如果一个面上受到了多重基色光的照射,将得到叠加的颜色,它们的叠加方式如下图所示。同时需要注意的是,同色光之间不能产生能量的叠加:也就是说两束红色光与一束绿色光叠加成的依然是黄色光;而一束红色光与两束绿色光叠加成的也是黄色光,这两种叠加出来的黄色光是没有差异的。
红绿蓝三基色分别用字母来表示。
而二次叠加后的三种颜色黄青紫,分别用 来表示。
对于三次叠加后的颜色,也就是白色,用来表示。
对于没有任何光线照射到的区域,呈现黑色,用来表示。
格式
输入格式
第一行有两个正整数,分别是m和n,表示区域有m 行,有n列。
之后m行,依次由远及近描述了每一行的情况。每一行给出n个正整数,表示第i行第j列中有堆放了多少积木。
之后3行,每行三个字符,描述了9个对应方向(与地图描述方向相同)的光照颜色。
其中每一个字符或者为中之一,表示对应的三种基色。或者为,表示没有照射光。
这九个方向依次如题中所述。
输出格式
输出给出了打印后的效果。
其中要求输出结果不含前导空行,结尾也没有额外空行。输出的第一列不能全是空格,且每一行末尾也没有额外的空格。
样例1
样例输入1
样例输出1
样例2
样例输入2
样例输出2
限制
对于的数据,且,没有入射光。
对于的数据,且,入射光只有一束,且入射方向一定是东南方。
对于的数据,且,每一个位置堆放的积木总数不超过100,入射光颜色可能是R或G或B中的任何一种颜色,最多可以有9束入射光。
此外,存在的数据,总的积木个数不超过1000,也就是说建筑物的总体积不超过1000。
来源
SDOI 2015 round2 day2
信息
- ID
- 1895
- 难度
- (无)
- 分类
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者