#P15821. [JOI Open 2013] Vote-Value Disparity
[JOI Open 2013] Vote-Value Disparity
说明
这是一个提交答案题。
JOI 王国即将举行全国选举。JOI 王国由 个省份组成。
JOI 王国的地图是一个大小为 的矩形网格。竖直方向有 个格子,水平方向有 个格子。一个格子通过其上、下、左、右四条边中的一条与另一个格子相连。这 个格子被划分为 个省份。每个省份都是由格子组成的连通区域。第 个省份()总共有 名选民。
你是 JOI 全国选举委员会的主席。你的任务是将这 个省份划分为 个选区(),以便选出 名代表。每个选区必须至少包含一个省份,并且属于同一个选区的所有格子需要构成一个连通区域。注意,格子只能通过共享一条边(上、下、左、右)来连通,仅共享一个顶点(对角相邻)的格子不算连通。
对于每个选区,比值 (该选区的选民总数)被称为该选区的单票权重。选票价值差异定义为所有选区的最大单票权重除以最小单票权重。
最近,“选票价值差异”的数值成为了一个严重的社会问题。你的任务是尽可能地让这个值变小。
任务
给定 JOI 王国各省的信息以及代表人数,请确定如何将省份划分为选区,使得选票价值差异尽可能小。
输入格式
从标准输入读取以下数据。
- 输入的第一行包含四个以空格分隔的整数 。其中,JOI 王国地图的高度为 ,宽度为 ,省份数量为 ,代表人数为 。
- 接下来的 行中,每行包含 个以空格分隔的整数。在第 行()中,第 个整数()为 ()。这表示从上往下数第 行、从左往右数第 列的格子属于第 个省份。
- 在接下来的 行中,第 行()包含一个整数 ,表示第 个省份的选民人数。
输出格式
在 行中输出将省份划分为选区的方式。输出的第 行()应包含一个整数,表示第 个省份所属的选区编号。
2 3 4 3
1 1 1
2 3 4
3
5
7
10
1
2
1
3
提示
样例 1 解释
在此样例中,JOI 王国的形状如下图所示。
:::align{center}
:::
各省的选民人数分别为 3、5、7、10。在该样例输出中,省份被划分为以下选区:
- 选区 1:省份 1 和省份 3
- 选区 2:省份 2
- 选区 3:省份 4
各选区的选民人数分别为 10、5、10。各选区的单票权重分别为 0.1、0.2、0.1。因此,选票价值差异为 。如果 ,,则有 $\left(\frac{3 - 2}{3 - 1.5}\right)^2 \times 20 = 8.8\cdots$,该输出将获得 8 分。
对于此样例输入,以下划分是不允许的,因为选区 2 未能形成一个连通区域:
- 选区 1:省份 1
- 选区 2:省份 2 和省份 4
- 选区 3:省份 3
约束条件
所有输入数据满足以下条件。
- ()
- 对于每个省份,属于该省份的所有格子构成一个连通区域。
评分细则
对于每个输入文件,你的得分计算方式如下:
如果你的输出不满足题目描述中的条件,则得分为 0。如果满足条件,设 为你输出方案的选票价值差异。那么你的得分按以下方式计算:
- 如果 ,得分为 0。
- 如果 ,得分为 的值向下取整。
- 如果 ,得分为 20。
的取值如下表所示:
| 输入文件 | X | Y |
|---|---|---|
| 01.txt | 1.02 | 2 |
| 02.txt | 1.66 | 2.5 |
| 03.txt | 1.06 | |
| 04.txt | 1.005 | 3 |
| 05.txt | 1.0005 | 2 |
翻译由 DeepSeek V3.2 完成
京公网安备 11011102002149号