#P14382. [JOISC 2017] 开荒者 / Cultivation

[JOISC 2017] 开荒者 / Cultivation

题目描述

在 21XX 年,IOI 星球的居民计划移民至一颗新发现的星球。

这颗新星球上有一片田地,它是一个由 RR 行和 CC 列组成的矩形网格。列的方向与南北方向平行,行的方向与东西方向平行。从北向南数第 ii 行、从西向东数第 jj 列的格子被称为格子 (i,j)(i, j)。田地的西北角是格子 (1,1)(1, 1),东南角是格子 (R,C)(R, C)。每年,IOI 星球的居民都会选择吹过田地的风的方向。风的方向可以是东、西、南或北之一。

为了在新星球上从事农业,他们将在田地的每个格子上种植“JOI 草”。在移民第一年的春季,田地中 NN 个格子已种有 JOI 草。

JOI 草的覆盖范围会随风扩展。每年夏季,JOI 草的种子会被风吹向居民选定的方向。种子会向风的方向移动一个格子并落地。如果种子落在一个没有 JOI 草的格子上,那么该格子将在下一年春季长出 JOI 草。一旦一个格子长出 JOI 草,它在未来将一直保持有 JOI 草。

我们希望计算:如果适当调整风的方向,使田地中所有格子都长出 JOI 草所需的最少年数。

任务

编写一个程序,计算在适当调整风的方向的前提下,使田地中所有格子都长出 JOI 草所需的最少年数。

输入格式

从标准输入读取以下数据:

  • 第一行包含两个由空格分隔的整数 RRCC。表示田地是一个 RRCC 列的矩形网格。
  • 第二行包含一个整数 NN,表示在移民第一年春季,田地中已有 JOI 草的格子数。
  • 接下来的 NN 行中,第 ii 行(1iN1 \le i \le N)包含两个由空格分隔的整数 SiS_iEiE_i。表示格子 (Si,Ei)(S_i, E_i) 在移民第一年春季已种有 JOI 草。

输出格式

向标准输出写入一行。该行输出包含在适当调整风的方向的前提下,使田地中所有格子都长出 JOI 草所需的最少年数。

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

提示

样例 1 解释

在样例输入 1 中,以下格子在移民第一年的春季已种有 JOI 草。

x 0 x 0
x x 0 x
x x x x
x x x x

新星球上的田地;标有‘0’的格子在移民第一年的春季已种有 JOI 草。

在本样例输入中,若我们为前三年选择的风向依次为西、南、南,则三年后的春季所有格子都将长出 JOI 草。下表中的数字描述了每个格子在春季首次长出 JOI 草的年份。这是所需的最少年数。

1 0 1 0
2 1 0 2
3 2 2 3

数据范围

所有输入数据满足以下条件:

  • 1N3001 \le N \le 300
  • 1R10000000001 \le R \le 1\,000\,000\,000
  • 1C10000000001 \le C \le 1\,000\,000\,000
  • 1SiR1 \le S_i \le R1iN1 \le i \le N)。
  • 1EiC1 \le E_i \le C1iN1 \le i \le N)。
  • 在移民第一年的春季,田地中至少存在一个没有 JOI 草的格子。
  • (Si,Ei)(Sj,Ej)(S_i, E_i) \ne (S_j, E_j)1i<jN1 \le i < j \le N)。

子任务

共有 6 个子任务。每个子任务的得分及附加约束如下:

子任务 1 [5 分]

  • R4R \le 4
  • C4C \le 4

子任务 2 [10 分]

  • R40R \le 40
  • C40C \le 40

子任务 3 [15 分]

  • R40R \le 40

子任务 4 [30 分]

  • N25N \le 25

子任务 5 [20 分]

  • N100N \le 100

子任务 6 [20 分]

无额外限制。

翻译由 Qwen3-235B 完成