#P11487. [2023省队模拟]国际象棋

[2023省队模拟]国际象棋

题目描述

给定一个大小为 n×mn \times m 的棋盘(即 nnmm 列),初始为空。你需要在这个棋盘上放置国际象棋中的棋子——马。

具体来说,你每次需要选择两个不同的空格子,在其上放置一对马(两个格子各一匹马),使得这一对马能够互相攻击。

根据如上规则,你最多可以放置多少对马?试构造方案以最大化马的数量。

【提示】

如下图所示,在国际象棋中,位于红色位置的一匹马,(在一步内)可以攻击(吃掉)黑色位置的马:

输入格式

本题单测试点包含多组数据。

第一行输入一个整数 tt ,表示数据组数。

对于每组数据,输入仅一行,包含两个整数 nnmm ,分别表示棋盘的行数和列数。

输出格式

对于每组数据,第一行输出一个整数 kk0knm20 \le k \le \lfloor \dfrac{nm}{2} \rfloor ),表示所放置马的对数的最大值。

紧接着输出 kk 行,第 ii 行包含四个整数 xi,1,yi,1,xi,2,yi,2x_{i,1},y_{i,1},x_{i,2},y_{i,2}1xi,1,xi,2n1 \le x_{i,1},x_{i,2} \le n1yi,1,yi,2m1 \le y_{i,1},y_{i,2} \le m ),表示你第 ii 次所选定的位置为 (xi,1,yi,1)(x_{i,1},y_{i,1})(xi,2,yi,2)(x_{i,2},y_{i,2}) (其中 (x,y)(x,y) 表示第 xx 行第 yy 列的格子)。

若有多种满足题意的方案,输出其中任意一组即可。

数据范围

对于 100%100\% 的数据, 1t1041 \le t \le 10^41n,m10001 \le n,m \le 1000(nm)106\sum{(n \cdot m)} \le 10^6 (即 tt 组数据的棋盘格子数量总和不超过 10610^6 )。

本题共 2020 个测试点,各测试点的具体限制如下:

测试点编号 tt n,mn,m
11 104 \le 10^4 3 \le 3
22 7 \le 7
33 10 \le 10
44 14 \le 14
55 20 \le 20
66 40 \le 40
77 100 \le 100
88 150 \le 150
99 200 \le 200
1010 250 \le 250
1111 300 \le 300
1212 350 \le 350
131613 \sim 16 =1=1 1000 \le 1000
172017 \sim 20 104 \le 10^4

输入样例 1

5
1 2
2 3
3 3
2 4
2 6

输出样例 1

0
2
1 1 2 3
2 1 1 3
4
1 1 2 3
3 1 1 2
3 3 2 1
1 3 3 2
4
1 1 2 3
2 1 1 3
1 2 2 4
2 2 1 4
4
1 1 2 3
2 2 1 4
1 6 2 4
1 3 2 5

样例解释

对于第一组数据,显然你无法放置任何棋子,故答案为 00

对于第二组数据,你可以将第一对棋子放置在 (1,1)(1,1)(2,3)(2,3) 这两个位置上,然后将第二对放置在 (2,1)(2,1)(1,3)(1,3) 上。由于棋盘上不存在可以攻击 (1,2)(1,2)(2,2)(2,2) 的位置,你无法在这两个位置上放置棋子。综上,答案为 22