QOJ.ac

QOJ

时间限制: 4 s 内存限制: 256 MB 总分: 100 可 Hack ✓

#13032. 工作

统计

有 $N$ 名工人和 $M$ 项不同的工作。给定一个矩阵 $A$,其中 $A_{i,j} = 1$ 表示第 $i$ 名工人有资格完成第 $j$ 项工作,$A_{i,j} = 0$ 则表示没有资格。只有当工人有资格完成某项工作时,才能将该工作分配给他。

你的目标是分配工作,使得工人们完成的工作量分布尽可能均匀(在欧几里得度量下)。这意味着,由第 $i$ 名工人完成的工作量组成的 $N$ 维向量,应尽可能接近每个元素都等于实数 $M/N$ 的 $N$ 维向量。

附加要求是,每一项能够被完成的工作都必须恰好分配给一名工人。

输入格式

第一行包含两个整数 $N$ 和 $M$ ($1 \le N, M \le 300$)。接下来有 $N$ 行,每行包含 $M$ 个字符。每个字符要么是 '0',要么是 '1'。这些行表示矩阵 $A$。

输出格式

输出 $N$ 行。在第 $i$ 行,首先输出 $k_i$,即分配给第 $i$ 名工人的工作数量。随后输出这些工作的编号。如果存在多种分配方式能达到最优分布,输出其中任意一种即可。

样例

输入 1

3 3
111
111
111

输出 1

1 1
1 2
1 3

输入 2

2 4
0100
1100

输出 2

1 2
1 1

说明

两个向量 $(u_1, u_2, \dots, u_N)$ 和 $(v_1, v_2, \dots, v_N)$ 之间的欧几里得距离是实数 $$\sqrt{(v_1 - u_1)^2 + (v_2 - u_2)^2 + \dots + (v_N - u_N)^2}$$

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.