峰值干扰是各任务占用区间内 aj 最大值再取最大,答案关于阈值单调:若存在安排使峰值 ≤x,则对更大的阈值也一定可行。因此对答案二分。
判定:把 aj>x 的时隙视为障碍。从左到右扫描,按顺序为每项任务找一段长度为 bi、且全部 ≤x 的连续时隙;段与段之间允许跳过障碍。能全部放下则 x 可行。由于 ∑bi≤n,当 x=maxaj 时一定可行。
实现方法:二分下界取 minaj,上界取 maxaj。每次判定用指针 i 从左向右走,维护当前连续合法时隙长度,够 bi 就放置并继续下一项。单次判定 O(n)。
要将 m 项探测任务按给定顺序安排到连续 n 个时隙。第 j 个时隙的干扰强度为 aj,第 i 项任务占用连续 bi 个时隙。记 li 为第 i 项任务的起始时隙,则其占用区间为 [li,li+bi−1]。
安排须满足:
峰值干扰为
i=1maxmj=limaxli+bi−1aj求所有合法安排下峰值干扰的最小值。
第一行一个正整数 T,表示测试数据组数。
对于每组测试数据:
第一行两个正整数 n,m,表示时隙数和任务数。
第二行 n 个正整数 a1,a2,…,an,表示每个时隙的干扰强度。
第三行 m 个正整数 b1,b2,…,bm,表示每项任务占用的时隙数。
对于每组测试数据,输出一行一个整数,表示峰值干扰的最小值。
输入
2
7 2
8 1 3 5 2 1 4
2 3
6 3
2 8 1 1 3 1
1 1 2
输出
4
3
说明
第一组:第一项任务放在 [2,3](覆盖 1,3,最大值 3),第二项放在 [5,7](覆盖 2,1,4,最大值 4)。峰值干扰为 max(3,4)=4。若要求峰值不超过 3,则时隙 1、4、7 不可用,剩余连续段长度不足以放下长度为 3 的第二项任务。
第二组:三项任务分别放在时隙 1、3 与 [4,5](覆盖 2;1;1,3),峰值干扰为 max(2,1,3)=3。若要求峰值不超过 2,则时隙 2、5 不可用,无法为第三项任务找到长度为 2 的连续段。
1≤T≤200000,所有测试数据的 n 之和 ≤200000,1≤n,1≤m,1≤ai≤109,1≤bi≤n,∑bi≤n。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册