P0894

[Usaco2005 Open]Waves 波纹

[Usaco2005 Open]Waves 波纹

湖面由无限整数格点组成。两条竖直河堤分别占据 x=B1x=B_1 和 x=B2x=B_2 两列,将湖面分成三个互不连通的水域。波纹不能穿过河堤;波纹到达河堤边缘时会以镜像方式反射,且反射不会改变波峰或波谷的符号。镜面位于河堤列与相邻水格之间,因此波纹只会在产生它的石子所在的水域内传播。

一颗石子在时刻 TT 落到坐标 (X,Y)(X,Y)。在观察时刻 RR,令 e=R−Te=R-T。若 e<0e<0,则该石子尚未落下,不会产生影响。

对于该石子的每条直接传播或经河堤反射的传播路径,其长度均采用曼哈顿距离计算。当路径长度等于 ee 时,该路径产生 +1+1 的波峰贡献;当路径长度等于 e−2e-2 时,该路径产生 −1-1 的波谷贡献。负长度对应的贡献忽略不计。

一个格点的状态值等于所有石子沿全部可达传播路径产生的贡献之和。

输入格式

第一行包含四个以空格分隔的整数 PP、B1B_1、B2B_2、RR,分别表示石子数量、两条河堤的横坐标和观察时刻。

接下来 PP 行,每行包含三个以空格分隔的整数 XX、YY、TT,表示一颗石子在时刻 TT 落到坐标 (X,Y)(X,Y)。

不存在两颗石子在相同时刻落到同一地点,且没有石子落在河堤上。

输出格式

输出 99 行,每行包含 99 个字符,描述时刻 RR 时区域 [−4,4]×[−4,4][-4,4]\times[-4,4] 内的湖面状态。

第 11 行对应 y=4y=4,第 99 行对应 y=−4y=-4;每行从左到右依次对应 x=−4,…,4x=-4,\ldots,4。

河堤上的格点输出 X。对于其余格点,若状态值为正、负或零,则分别输出 *、o 或 -。

样例输入

2 4 100 4
-3 0 1
0 0 2

样例输出

--------X
-*------X
*-*-*---X
-o-*-*--X
o-----*-X
-o-*-*--X
*-*-*---X
-*------X
--------X

数据范围

  • 1≤P≤51\le P\le 5;
  • −5×105≤B1,B2≤5×105-5\times 10^5\le B_1,B_2\le 5\times 10^5;
  • B1≠B2B_1\ne B_2;
  • 1≤R≤5×1051\le R\le 5\times 10^5;
  • −5×105≤X,Y,T≤5×105-5\times 10^5\le X,Y,T\le 5\times 10^5;
  • 对于每颗石子,均有 X≠B1X\ne B_1 且 X≠B2X\ne B_2;
  • 不存在两颗石子在相同时刻落到同一地点。

来源与许可

本题为 USACO 2005 Open 试题「Waves 波纹」,题面与测试数据整理自 BZOJ。

样例 1

输入

2 4 100 4
-3 0 1
0 0 2

输出

--------X
-*------X
*-*-*---X
-o-*-*--X
o-----*-X
-o-*-*--X
*-*-*---X
-*------X
--------X