QOJ.ac

QOJ

時間限制: 2 s 記憶體限制: 256 MB 總分: 100

#22626. 波浪

统计

农夫 John 的奶牛们特别喜欢往牧场旁的湖里扔小石子。石子落到湖面时,会产生在湖面上传播的波浪。

湖面用一个很大的方格网格表示。每个方格的水深由波浪的相互作用决定。投下任何石子之前,每个方格(原有河岸上的方格除外)的水深都是 0。显示时,各方格表示如下:

  • o:方格水深小于 0。

  • -:方格水深等于 0。

  • *:方格水深大于 0。

  • X:方格属于原有河岸。

石子落入湖中,会产生一道水面升高的波浪,呈菱形每秒向外扩展。菱形上各方格的水深增加 1,且只持续一秒。两秒后,这道波浪后面跟着一道水面降低的波浪(水深减少 1),也呈菱形向外扩展。每颗石子只产生两道波浪,先升高,后降低。

例如,下图显示一颗石子落在湖中央后,经过 0、1、2、3 秒时的效果:

0 seconds   1 second    2 seconds   3 seconds
 -------     -------     -------     ---*---
 -------     -------     ---*---     --*-*--
 -------     ---*---     --*-*--     -*-o-*-
 ---*---     --*-*--     -*-o-*-     *-o-o-*
 -------     ---*---     --*-*--     -*-o-*-
 -------     -------     ---*---     --*-*--
 -------     -------     -------     ---*---

图中从左至右依次为 0 秒、1 秒、2 秒、3 秒。

河岸的 $x$ 坐标固定,纵贯湖的整个长度(从上到下),宽度为一个方格。波浪到达河岸时不会继续穿过河岸,而是继续扩展,其中撞到河岸的部分被反射。

下图显示波浪撞到一侧河岸的最初几秒。为使图更清楚,没有画出第二道水面降低的波浪:

1 second    2 seconds   3 seconds   4 seconds   5 seconds
 X------     X------     X--*---     X-*-*--     X*---*-
 X------     X--*---     X-*-*--     X*---*-     X*----*
 X--*---     X-*-*--     X*---*-     X*----*     X-*----
 X-*-*--     X*---*-     X*----*     X-*----     X--*---
 X--*---     X-*-*--     X*---*-     X*----*     X-*----
 X------     X--*---     X-*-*--     X*---*-     X*----*
 X------     X------     X--*---     X-*-*--     X*---*-

图中从左至右依次为 1、2、3、4、5 秒。

波浪的各部分相遇时,不会影响彼此的传播方式。换句话说,下一个时刻,波浪会像未曾相遇一样扩展。不过,它们在湖上的作用会叠加。例如:

 1 second      2 seconds     3 seconds     4 seconds
 ---------     ---------     ---------     ---*-----
 ---------     ---------     ---*-----     --*-*-*--
 ---------     ---*-----     --*-*-*--     -*-o-*-*-
 ---*-----     --*-*-*--     -*-o-*-*-     *-o-----*
 --*-*-*--     -*-o-*-*-     *-o-----*     -o-*-o---
 ---*-----     --*-*-*--     -*-o-*-*-     *-o-----*
 ---------     ---*-----     --*-*-*--     -*-o-*-*-
 ---------     ---------     ---*-----     --*-*-*--
 ---------     ---------     ---------     ---*-----

图中从左至右依次为 1、2、3、4 秒。

编写程序,帮助奶牛们确定波浪随时间如何扩展。

输入格式

  • 第 1 行:四个用空格分隔的整数 $P$, $B1$, $B2$, $R$:

    • $P$ ($1 \le P \le 5$) 表示石子数。

    • $B1$ ($-500{,}000 \le B1 \le 500{,}000$) 和 $B2$ ($-500{,}000 \le B2 \le 500{,}000$) 是两侧河岸的 $x$ 坐标。

    • $R$ ($1 \le R \le 500{,}000$) 表示需要显示湖面的时刻。

任意两颗石子都不会在同一时刻落在同一位置。两侧河岸的 $x$ 坐标不同,且不会有石子落在河岸上。

  • 第 $2..P+1$ 行:每行三个用空格分隔的整数描述一颗石子:$X$ ($-500{,}000 \le X \le 500{,}000$)、$Y$ ($-500{,}000 \le Y \le 500{,}000$) 和 $T$ ($1 \le T \le 500{,}000$)。

    • $X$ 和 $Y$ 是石子投下的位置坐标。

    • $T$ 是石子投下的时刻。

输出格式

  • 第 1 到 9 行:输出以 $(0,0)$ 为中心的 $9 \times 9$ 网格。左下角表示 $(-4,-4)$,右上角表示 $(4,4)$。网格应表示时刻 $R$ 的湖面状态。

样例

输入格式 1

2 4 100 4
-3 0 1
0 0 2

输出格式 1

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

题目作者:Richard Forster,BIO 2003,2003

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.