由于操作只能将元素的值减少 1,且目标是对所有 i 都达到 pi=qi,因此最终两个序列相同位置的值必然变为某个 ci,并且有 ci≤min(pi,qi)。为了让总操作次数尽量少,应使最终值尽可能大,因此最优选择是:
ci=min(pi,qi)这样,每个位置上多出来的部分都必须被单独减掉:
有两个长度均为 n 的非负整数序列 p1,p2,…,pn 和 q1,q2,…,qn。每次操作只能将某个元素的值减少 1,且不能对已经是 0 的元素执行操作。允许的操作有三种:
目标是通过若干次操作,使得对于所有 1≤i≤n 都有 pi=qi。请计算达成目标所需的最少操作次数。
约束:单个测试文件中最多包含 T=2×105 组数据。每组数据中序列长度 n 不超过 2×105,且所有数据的 n 之和也不超过 2×105。序列中的每个元素均为非负整数且不超过 109。
第一行包含一个整数 T,表示测试数据的组数。接下来依次描述每组数据:
每组数据的第一行包含一个整数 n,表示序列的长度; 第二行包含 n 个整数,依次为 p1,p2,…,pn; 第三行包含 n 个整数,依次为 q1,q2,…,qn。
对于每组测试数据,输出一行一个整数,表示最少的操作次数。
输入
1
4
10 20 30 40
10 20 30 40
输出
0
说明
所有位置上 pi 与 qi 均相等,最终值可以保持为 ci=pi=qi,不需要执行任何操作。最少操作次数为 0。
输入
1
3
1 5 2
3 2 4
输出
4
说明
逐位比较:
2,计入 needB;3,计入 needA;2,计入 needB。
因此 needA=3,needB=2+2=4。操作 3 可以同时消耗两边需求,最少操作次数为 max(3,4)=4。输入
2
2
0 0
0 0
2
7 0
0 3
输出
0
7
说明
第一组数据:两个序列完全相同,needA=0,needB=0,最少操作次数为 0。
第二组数据:p=[7,0],q=[0,3]。对于 i=1,7>0,needA 累加 7;对于 i=2,0<3,needB 累加 3。因此 needA=7,needB=3,最少操作次数为 max(7,3)=7。
输入
1
1
1000000000
0
输出
1000000000
说明
序列长度 n=1,p1=109,q1=0。最终两者必须相等且都只能减少,因此 p1 必须降至 0。由于 q1 已经为 0,不能再减少,操作 3(同时减少 pi 和 qj)中涉及 q1 的部分无法执行。因此只能通过 109 次操作 1 单独将 p1 减为 0。最少操作次数为 1000000000。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册