#P1498. 2024.8.21-秋招-第2题-Devops任务调度

2024.8.21-秋招-第2题-Devops任务调度

视频讲解

题目内容

11.某DevopsDevops系统有一批并发任务需要匹配合适的执行机调度执行,任务和执行机都具有CPUCPU型(用00表示)和IOIO型(用11表示)的区别,此外还有一种通用型执行机(用22表示),一批任务和执行机的类型分别用数组taskstasksmachinesmachines表示,tasks[i]tasks[i]表示第i个任务,machines[i]machines[i]表示执行机的类型。每台CPUCPU型、IOIO型执行机只能执行一个对应类型的任务,而通用型执行机既能执行CPUCPU类型任务也能执行IOIO类型任务。

22.假设现有的匹配策略如下:任务需要按照优先级从高到低依次匹配执行机(i=0i=0优先级最高),因此每一轮选择任务数组头部(i=0i=0)的任务去匹配空置执行机数组头部(i=0i=0)的执行机,若任务与执行机类型匹配,则代表该任务调度成功,把该执行机从空置执行机数组中移除。若任务与执行机的类型不匹配,则将执行机放到执行机数组尾部,循环该过程直到任务全部匹配成功或当前任务无法被所有剩余空置执行机匹配。

33.现规定任意时刻都可以选择使用通用执行机,但一旦选择将某个类型的任务匹配通用型执行机,则所有通用型机器都只能用于执行该类型的任务,为了避免任务排队阻塞,请返回现有匹配策略下剩下的最小空置执行机数量。

解答要求

输入

输入共33行 首行是一个正整数nn,表示任务数量以及执行机数量

22行包含nn个整数,以空格分隔,表示为任务数组taskstasks

33行包含nn个整数,以空格分隔,表示为空置执行机数组machinesmachines

数据范围:1n100,0tasks[i]10machines[i]2.1≤n≤100,0≤tasks[i]≤1,0≤machines[i]≤2.

输出

一行一个整数,代表当前匹配策略下剩下的最小空置执行机数量。

样例1

输入

3
1 0 1
1 2 0

输出

0

解释:第一轮 任务数组头部类型11,空置执行机数组头部类型11,四配成功,任务数组变为[0,1][0,1],空置执行机数组变为[2,0][2,0]

第二轮 任务数组头部类型00,空置执行机数组头部类型22,若不选择类型22的执行机执行类型00的任务,将执行机放回数组尾部,任务数组不变为[0,1][0,1],空置执行机数组变为[0,2][0,2]

第三轮 任务数组头部类型00,空置执行机数组头部类型00,匹配成功,任务数组变为[1][1],空置执行机数组变为[2][2]

第四轮 任务数组头部类型11,空置执行机数组头部类型22,任务类型11选择匹配执行机类型22,因此剩下的最小空置执行机数量为00

样例2

输入

4
1 0 1 1
1 0 2 0

输出

1

解释:第一轮 任务数组头部类型11,空置执行机数组头部类型11,调度成功,任务数组变为[0,1,1][0,1,1],空置执行机数组变为[0,2,0][0,2,0]

第二轮 任务数组头部类型00,空置执行机数组头部类型00,调度成功,任务数组变为[1,1][1,1],空置执行机数组变为[2,0][2,0]

第三轮 任务数组头部类型11,空置执行机数组头部类型22,类型11的任务选择匹配类型22的执行机,任务数组变为[1][1],空置执行机数组变为[0][0] 第四轮 任务数组头部类型11,空置执行机数组头部类型00,无法匹配,剩下的最小空置执行机数量为11