#P16755. [Nerc2024]Legacy Screensaver

[Nerc2024]Legacy Screensaver

题目描述

在一个非常古老的操作系统中,屏幕保护程序由两个在屏幕上飞来飞去的矩形组成。

屏幕宽为 WW 像素,高为 HH 像素。以屏幕左上角为原点,xx 轴向右,yy 轴向下。

矩形 iii=1,2i=1,2)的宽为 wiw_i,高为 hih_i。初始时,其左上角坐标为 (xi,yi)(x_i,y_i),移动方向为

(δxi,δyi),(\delta x_i,\delta y_i),

其中 δxi,δyi\delta x_i,\delta y_i 均为 1-111

每一秒结束时,矩形 ii 的左上角坐标会瞬间增加

(δxi,δyi)(\delta x_i,\delta y_i)。

当矩形碰到屏幕左边界或右边界时,在下一秒开始前,δxi\delta x_i 的符号反转。类似地,当矩形碰到屏幕上边界或下边界时,δyi\delta y_i 的符号反转。

若矩形同时碰到两条边界,这只可能发生在屏幕角落,此时两个方向分量都会反转。

因此,两个矩形始终完全位于屏幕内部。可以认为矩形与屏幕边界发生完全弹性碰撞。

注意,运动仍然是离散的:每一秒结束时,矩形会在横纵两个方向上各瞬间移动 1 像素。

你想知道两个矩形有多大比例的时间发生重叠。若两个矩形的交集面积为正,则认为它们重叠。

f(t)f(t) 表示整数

τ=0,1,,t1\tau=0,1,\ldots,t-1

中,使得两个矩形在第 τ\tau 秒重叠的 τ\tau 的数量。其中第 00 秒表示矩形尚未开始移动的初始状态。

求极限

limtf(t)t,\lim_{t\to\infty}\frac{f(t)}t,

并将其表示为最简分数。可以证明该极限一定是有理数。

输入格式

输入包含多组测试用例。

第一行包含测试用例数量 TT

1T10001\le T\le1000。

对于每个测试用例:

第一行包含两个整数 W,HW,H,表示屏幕的宽和高:

3W,H40003\le W,H\le4000。

接下来两行描述两个矩形。每个矩形由六个整数

wi,hi,xi,yi,δxi,δyiw_i,h_i,x_i,y_i,\delta x_i,\delta y_i

描述,分别表示矩形的宽、高、左上角坐标和初始移动方向,并满足:

1wiW2,1\le w_i\le W-2, 1hiH2,1\le h_i\le H-2, 0<xi<Wwi,0<x_i<W-w_i, 0<yi<Hhi,0<y_i<H-h_i, δxi,δyi{1,1}\delta x_i,\delta y_i\in\{-1,1\}。

所有测试用例的 W+HW+H 之和不超过 8000。

输出格式

对于每个测试用例,输出两个整数 p,qp,q,格式为:

p/q

中间不含空格,表示

limtf(t)t=pq\lim_{t\to\infty}\frac{f(t)}t=\frac pq。

要求 p0p\ge0q>0q>0,并且分数必须最简,即

gcd(p,q)=1\gcd(p,q)=1。

样例

2
3 3
1 1 1 1 1 1
1 1 1 1 1 -1
5 4
2 2 1 1 -1 -1
2 1 2 2 1 -1
1/2
1/3

样例说明

对于第二组测试数据,前几个时刻两个矩形的状态如下图所示。它们在 τ=0\tau=0τ=6\tau=6 时重叠,因此例如 f(8)=2f(8)=2