#P10334. 饮料(Beverages)

0

饮料(Beverages)

饮料(Beverages)

题目描述

有一个果汁机,每分钟可以制作一杯任意体积的果汁。

有 nn 个人排成一队。第 ii 个人将在第 tit_i 分钟走到果汁机前,并拿走当前已经制作的果汁中体积最大的一杯。第 ii 个人拿到体积大于等于 aia_i 的果汁就会满意。如果此时没有果汁,则第 ii 个人也会不满意。

问是否能够让所有人满意。如果是,输出让所有人满意所需的果汁体积之和的最小值。

输入格式

第一行一个整数 nn (1≤n≤2×105)(1\leq n\leq 2 \times 10^5),表示队伍中人的数量。

接下来一行 nn 个整数 t1,t2,…,tnt_1,t_2,\ldots,t_n (1≤t1≤t2≤…≤tn≤109)(1\leq t_1\leq t_2\leq\ldots\leq t_n\leq 10^9),其中 tit_i 表示第 ii 个人到果汁机前的时间。如果两个人的到达时间相同,则按题目给出的顺序从左到右决定先后。

接下来一行 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n (1≤ai≤109)(1\leq a_i\leq 10^9),其中 aia_i 表示第 ii 个人对果汁的体积要求。

输出格式

如果不能令所有人满意,输出 −1-1。

否则输出一行一个整数,表示所需的最小体积和。

样例输入 #1

5
1 3 4 6 6
3 8 2 7 4

样例输出 #1

24

样例输入 #2

5
1 3 4 5 5
3 8 2 7 4

样例输出 #2

26

数据范围

样例一解释如下:

时间 制作 取走
11 33
22 −-
33 88
44 22
55 44 −-
66 77 7,47,4

样例二解释如下:

时间 制作 取走
11 33
22 44 −-
33 88
44
55 77 7,47,4
66 −-

对于 100%100\% 的数据,1≤n≤2×1051 \le n \le 2 \times 10^5,1≤t1≤t2≤⋯≤tn≤1091 \le t_1 \le t_2 \le \dots \le t_n \le 10^9,1≤ai≤1091 \le a_i \le 10^9。

知识点与难度

本题涉及的知识点从属于 CSP-S,难度(CF Rating):1800。


测试点分布

Subtask 分值 测试点编号 说明
0 10 1~2 样例
1 20 3~8 小规模 n≤20 / 边界 n=1 / 无解情况 t_i<i 输出-1
2 15 9~12 Hack: 全员同一时刻到达 t_i=n / Hack: 答案超32位整数达2×10^14 / Hack: 最后一个位置差1分钟无解
3 30 13~20 大规模 n=2×10^5, t_i,a_i≤10^9 倒序单调栈压力测试
4 25 21~25 随机到达序列与需求体积回归测试

出处:原题链接