P5469. 主机灰度分批
场次:2026年9月18日-非AI方向 · 来源:CodeFun2000 P5469
题目描述
云上要给一大批计算节点做版本滚动。为了把风险压住,升级会拆成若干波次,也就是常说的灰度放量。
越靠前的波次越希望把各类机型都点到,好尽早把隐患暴露出来。
任务描述
手里有 台主机,每台带着 个维度的标签(比如板型、系统发行版)。某一维上标签相同,就认定这两台在该维属于同一类。
请按下面的规则排出分波方案:越靠前的波次,标签种类要尽量铺得开。
核心规则
-
波次容量:
主机总数记为 ,波次总数记为 。
- 基准容量 。
- 余数 。
- 前 个波次容量都是 ,最后 个波次容量都是 。
-
增量尽量大:
填当前波次时,只能从未入选的主机里挑。看哪一台还能给本波次补进最多尚未出现的标签。
- 增量:该机某个维度上的标签,若本波次已入选的机器里还没出现过,就记一分。
- 先比增量,越大越先拿。
- 增量打平则拿 更小的那台。
-
执行顺序:
从第 波填到第 波,每波填满为止。某台一旦进了某一波,后面的波次不再考虑它。
输入格式
-
首行两个整数 和 ,即主机台数与标签维度。
-
随后 行:每台主机一行,格式为
nid tag_1 tag_2 ... tag_d -
末行一个整数 ,即波次总数。
输出格式
输出 行。第 行给出该波次里的 ,同一行按数值升序,相邻编号用空格隔开。
示例
示例 1
输入:
4 1
10 A
11 A
12 A
13 A
2
输出:
10 11
12 13
说明:
- 余 ,两波容量都是 。
- 标签全是 ,第一台进波次后其余增量都变成 。
- 增量打平时按 从小到大,故第一波 ,其余进第二波。
示例 2
输入:
6 2
1 X P
2 X Q
3 Y P
4 Y Q
5 Z Q
6 Z R
2
输出:
1 4 6
2 3 5
说明:
- 余 ,两波容量都是 。
- 第一波:空盘先拿 (增量 );已有 后再拿 (增量 );已有 后再拿 (增量 )。
- 剩下 进第二波。
提示
- 多样性按各维标签种类相加;越靠前的波次越优先把种类铺开。
- 容量:总数 、波次 ,基准是 ,多出来的台数摊到最后若干波。