#eFTFGlydlt60x6901. 机器任务 Machine Schedule
机器任务 Machine Schedule
好的,这是整理好的题面,不含解题思路,只包含样例解释。
题目描述
有两台机器 A 和 B 以及 个任务。
机器 A 有 种不同的模式(模式 ),机器 B 有 种不同的模式(模式 )。
两台机器最开始都处于模式 。
每个任务既可以在 A 上执行,也可以在 B 上执行。
对于每个任务 ,给定两个整数 和 :
- 如果该任务在 A 上执行,需要设置 A 的模式为 。
- 如果该任务在 B 上执行,需要设置 B 的模式为 。
任务可以以任意顺序被执行,但每台机器转换一次模式就要重启一次(如果连续两个任务在同一台机器执行且需要的模式不同,就需要一次重启;如果模式相同则无需重启)。初始模式为 0,如果第一个任务在某机器执行需要的模式不是 0,则那台机器也需要一次重启。
要求分配任务到机器并安排顺序,使机器重启次数最少。
输入格式
输入包含多组测试数据。
每组数据第一行包含三个整数 。
接下来 行,每行三个整数 , 为任务编号,从 0 开始。
当输入一行为 0 时,表示输入终止。
输出格式
每组数据输出一个整数,表示所需的机器最少重启次数。
数据范围
输入样例
5 5 10
0 1 1
1 1 2
2 1 3
3 1 4
4 2 1
5 2 2
6 2 3
7 2 4
8 3 3
9 4 3
0
输出样例
3
样例解释
(A 有 0~4 模式),(B 有 0~4 模式), 个任务。
每个任务 的 (A 需要的模式)和 (B 需要的模式):
| 任务编号 | a[i] | b[i] |
|---|---|---|
| 0 | 1 | 1 |
| 1 | 2 | |
| 2 | 3 | |
| 3 | 4 | |
| 4 | 2 | 1 |
| 5 | 2 | |
| 6 | 3 | |
| 7 | 4 | |
| 8 | 3 | 3 |
| 9 | 4 |
目标
分配任务到机器 A 或 B,并安排顺序,使重启次数最少。
初始时机器 A、B 都是模式 0。
一种最优分配(使重启次数为 3):
- 将任务 0~3 分给 A:它们在 A 上都需要模式 1(因为 a=1),所以 A 从模式 0 切换到模式 1 需要1 次重启,然后连续执行这四个任务无需再重启。
- 将任务 4~7 分给 A:它们在 A 上都需要模式 2,所以从模式 1 切换到模式 2 需要第 2 次重启,然后连续执行这四个任务。
- 将任务 8 分给 A:需要模式 3,切换 → 第 3 次重启。
- 任务 9 给 A:需要模式 4,切换 → 第 4 次重启。
这样 A 重启 4 次,B 没干活,但可以优化,让一些任务给 B 做。
实际上如果将某些任务分给 B 做,并且安排顺序使 B 的重启次数较少,可以更省。
已知最少重启次数是 3,对应一种分配方案可能是:
- 任务 0~3 在 A(模式 1),A 重启 1 次。
- 任务 4~7 在 A(模式 2),A 重启 1 次(累计 2 次)。
- 任务 8~9 在 B(模式 3),B 初始模式 0 切到模式 3 重启 1 次(累计 3 次)。
这样总重启 3 次。
输出 3。