#P7057. [2017年安徽集训]耐心

    ID: 6888 传统题 1000ms 256MiB 尝试: 6 已通过: 1 难度: 8 上传者: 标签>算法基础构造数学分治贪心二分CF2400

[2017年安徽集训]耐心

题目描述

你有一块 r×cr\times c 的田地,每个格子里都有一个土豆。你需要收割田地中所有的土豆。

每天,你可以驾驶一辆收集车采收土豆。你可以选择一行或一列,让收集车沿着这一行或这一列行驶,并选择收集经过格子中的部分土豆。

每一天至多收集 dd 个土豆。当天被收集的土豆会在所选的行或列上形成若干段连续线段;形成多少段线段,就意味着当天需要开启或重新启动多少次机器。

请构造一种收割方案,使得:

  1. 收割完所有土豆所需的天数最少;
  2. 在天数最少的前提下,机器开启或重启次数的总和最少。

输入格式

第一行包含一个正整数 TT,表示测试数据组数。

接下来 TT 行,每行包含三个正整数 r,c,dr,c,d

输出格式

对于每组测试数据,输出 rr 行,每行包含 cc 个整数。

ii 行第 jj 个整数表示格子 (i,j)(i,j) 中的土豆被收割的日期。

样例输入

2
2 9 5
3 5 2

样例输出

1 1 1 1 1 2 2 2 2
3 3 3 3 3 4 4 4 4
1 2 3 4 5
1 2 3 4 5
6 6 7 8 7

样例解释

第一组样例一共需要 44 天,每天收割的土豆都只形成一段连续线段。

第二组样例一共需要 88 天,第 77 天收割的土豆分成两段。

注意: 原题面说明,第二组样例的正确结果应将右下角附近的 78 交换。也就是说,最后一行应为:

6 6 7 7 8

数据范围

  • 对于 50%50\% 的数据:1r,c121\le r,c\le 12T10T\le 10
  • 对于 100%100\% 的数据:1r,c4001\le r,c\le 400T100T\le 100,且所有测试数据的 rcrc 之和不超过 5×1055\times 10^5