P2961 [USACO09NOV] Who Brings the Cookies? G

题目描述

农夫约翰的 $N (1 \leq N \leq 1,000)$ 头奶牛,方便地编号为 $1$ 到 $N$,决定组成 $M (1 \leq M \leq 100)$ 个学习小组。每个学习小组 $G_i$ 中有 $S_i (1 \leq S_i \leq 19)$ 头奶牛参与学习(即奶牛 $G_i1, G_i2, \dots$)。一头奶牛可能参加多个学习小组。 对于每个学习小组,必须选择其中一头奶牛带饼干来参加会议。饼干很贵且需要时间来获取,因此奶牛们希望尽可能公平地分配带饼干的工作。 她们决定,如果一头奶牛参加了大小为 $c_1, c_2, \dots, c_K$ 的会议,她最多只愿意为 $ceil(1/c_1 + 1/c_2 + \dots + 1/c_K$) 个会议带饼干。 找出哪头奶牛为每次会议带饼干。如果无法做到,只需输出 '$-1$'。如果有多个解决方案,任选其一。

输入格式

* 第 $1$ 行:两个用空格分隔的整数:$N$ 和 $M$。 * 第 $2$ 行到第 $M+1$ 行:第 $i+1$ 行包含多个用空格分隔的整数:$S_i, G_i1, G_i2, \dots$

输出格式

* 第 $1$ 行到第 $M$ 行:如果映射是可能的,第 $i$ 行包含为学习小组 $i$ 带饼干的奶牛编号。否则,第 $1$ 行仅包含整数 $-1$。

说明/提示

奶牛 $1$ 最多可以为 $2$ 次会议带饼干,奶牛 $2$ 可以带 $2$ 次,奶牛 $3$ 可以带 $2$ 次,奶牛 $4$ 可以带 $1$ 次,奶牛 $5$ 可以带 $1$ 次。 (由 ChatGPT 4o 翻译)