CF993D Compute Power
题目描述
你需要执行若干个任务,每个任务都需要一定数量的处理器,并消耗一定的计算能力。
你有足够多的模拟计算机,每台计算机的处理器数量足以执行任何任务。每台计算机每次最多只能执行一个任务,总共最多可以执行两个任务。第一个任务可以是任意任务,第二个任务的计算能力必须严格小于第一个任务。你需要将每台计算机分配 1 到 2 个任务。你将首先在每台计算机上执行第一个任务,等待所有第一个任务完成后,再在分配了两个任务的计算机上执行第二个任务。
如果在第一轮任务执行期间,所有计算机上正在运行的任务的总消耗计算能力与所用处理器总数的比值(即所有正在运行任务的消耗能力之和除以所用处理器数之和)超过某个未知阈值,整个系统就会爆炸。第二轮任务的执行没有任何限制。请你求出使得所有任务能够被分配且系统不会在第一轮爆炸的最小阈值。
由于题目特殊要求,请输出答案乘以 1000 并向上取整。
输入格式
第一行包含一个整数 $n$($1 \leq n \leq 50$),表示任务数量。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq 10^8$),其中 $a_i$ 表示第 $i$ 个任务所需的计算能力。
第三行包含 $n$ 个整数 $b_1, b_2, \ldots, b_n$($1 \leq b_i \leq 100$),其中 $b_i$ 表示第 $i$ 个任务所需的处理器数量。
输出格式
输出一个整数,表示使得所有任务能够被分配且系统不会在第一轮爆炸的最小阈值,乘以 1000 并向上取整。
说明/提示
在第一个样例中,最优策略是每个任务分配到一台单独的计算机上,第一轮每个处理器的平均计算能力为 9。
在第二个样例中,最优策略是将计算能力为 10 和 9 的任务分配到一台计算机上,将计算能力为 10 和 8 的任务分配到另一台,将计算能力为 9 和 8 的任务分配到第三台,第一轮每个处理器的平均计算能力为 $(10 + 10 + 9) / (10 + 10 + 5) = 1.16$。
由 ChatGPT 4.1 翻译