#P13487. [GCJ 2008 Finals] Ping Pong Balls

[GCJ 2008 Finals] Ping Pong Balls

Description

一个大房间里布满了捕鼠夹,这些捕鼠夹按网格排列。每个捕鼠夹上都装有两个乒乓球,精心放置,使得当捕鼠夹被触发时,这两个乒乓球会被弹射出去,落到其他捕鼠夹上并触发它们。房间的墙壁是粘性的,任何碰到墙壁的球都会被吸收。

每当一个捕鼠夹被击中时,会以相同的方式发射两颗乒乓球:它们的运动由相对于发射捕鼠夹的 XXYY 位移决定。你可以选择向房间发射一颗乒乓球。它会击中某个捕鼠夹,触发它并发射出两颗球。这两颗球又会触发另外两个捕鼠夹,然后又有四颗球飞出……当一切尘埃落定时,许多捕鼠夹被触发,但仍有一些捕鼠夹没有被任何球击中。

你需要计算最终会有多少个捕鼠夹被触发。

例如(见第一个样例),下图展示了一个宽为 55,高为 33 的房间。每个捕鼠夹发射的两颗乒乓球的方向分别为 (1,0)(-1, 0)(1,1)(-1, -1)。你最初发射的球击中了位置 (4,2)(4, 2) 的捕鼠夹。最终,共有 1212 个捕鼠夹被触发。

Input Format

输入的第一行为测试用例数 CC。接下来有 CC 组测试数据。每组数据包含四行。

第一行为捕鼠夹网格的尺寸(即房间的尺寸),给出宽度 WW 和高度 HH

接下来的两行分别给出两颗乒乓球的目的地,以 XXYY 的位移表示。例如,如果这两行为 0 10\ 11 11\ 1,则触发一个捕鼠夹会发射两颗球:一颗会击中正上方的捕鼠夹,另一颗会击中右上方的捕鼠夹。

最后一行为两个整数,分别表示最初被乒乓球击中的捕鼠夹的列和行(0 00\ 0 表示左下角的捕鼠夹)。

Output Format

对于每组测试数据,输出一行,格式为 "Case #AA: BB",其中 AA 表示测试用例编号(从 11 开始),BB 表示被触发的捕鼠夹总数(包括最初被击中的那个)。

3
5 3
-1 0
-1 -1
4 2
50 50
0 1
1 1
10 10
6 2
2 0
3 0
0 0
Case #1: 12
Case #2: 820
Case #3: 5

Hint

数据范围

  • 1C1001 \leq C \leq 100
  • 20任意位移20-20 \leq \text{任意位移} \leq 20
  • 两个位移向量都不会是零向量。

小数据范围(4 分,测试点 1 - 可见)

  • 2W,H1002 \leq W, H \leq 100

大数据范围(11 分,测试点 2 - 隐藏)

  • 2W,H10000002 \leq W, H \leq 1000000

由 ChatGPT 4.1 翻译