CF2118E.Grid Coloring

提高+/省选-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有一个 n×mn \times m 的网格,初始时每个格子都是白色的。你需要依次为所有格子染色。每当你染色一个格子时,所有距离它最远的已染色格子会受到一次惩罚。请你给出一种染色顺序,使得没有任何格子的惩罚次数超过 33。

注意,nn 和 mm 都是奇数。

本题使用的距离度量为“棋盘距离”(Chebyshev 距离),在判定距离相等时,使用“曼哈顿距离”(Taxicab 距离)来决定优先级。具体来说,若有格子 (x2,y2)(x_2, y_2) 和 (x3,y3)(x_3, y_3),对于格子 (x1,y1)(x_1, y_1),如果满足下列条件之一,则认为 (x2,y2)(x_2, y_2) 比 (x3,y3)(x_3, y_3) 更远:

  • max⁡(∣x1−x2∣,∣y1−y2∣)>max⁡(∣x1−x3∣,∣y1−y3∣)\max\big(\lvert x_1 - x_2 \rvert, \lvert y_1 - y_2 \rvert\big) > \max\big(\lvert x_1 - x_3 \rvert, \lvert y_1 - y_3 \rvert\big)
  • max⁡(∣x1−x2∣,∣y1−y2∣)=max⁡(∣x1−x3∣,∣y1−y3∣)\max\big(\lvert x_1 - x_2 \rvert, \lvert y_1 - y_2 \rvert\big) = \max\big(\lvert x_1 - x_3 \rvert, \lvert y_1 - y_3 \rvert\big) 且 ∣x1−x2∣+∣y1−y2∣>∣x1−x3∣+∣y1−y3∣\lvert x_1 - x_2 \rvert + \lvert y_1 - y_2 \rvert > \lvert x_1 - x_3 \rvert + \lvert y_1 - y_3 \rvert

可以证明,至少存在一种可行解。


上图展示了在 5×55 \times 5 网格中染色中心格子后各格子的惩罚变化。数字表示各格子的惩罚次数。

输入格式

每组测试数据包含多个测试用例。第一行包含一个整数 tt(1≤t≤1001 \le t \le 100),表示测试用例的数量。

每个测试用例的第一行包含两个奇数整数 nn 和 mm(1≤n,m≤49991 \le n, m \le 4999),分别表示行数和列数。

保证所有测试用例中 n⋅mn \cdot m 的总和不超过 50005000。

输出格式

对于每个测试用例,输出 n⋅mn \cdot m 行,第 ii 行输出你选择的第 ii 个染色格子的坐标。若有多种方案,输出任意一种均可。

样例输出中的空行仅为增强可读性,你不需要输出空行。

输入输出样例

  • 输入#1

    3
    3 3
    1 1
    1 5

    输出#1

    2 1
    2 3
    2 2
    1 1
    3 2
    3 3
    3 1
    1 3
    1 2
    
    1 1
    
    1 2
    1 4
    1 5
    1 1
    1 3

说明/提示

在第一个测试用例中,网格可以按如下方式染色:


数字表示各格子的惩罚次数。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页