CF883J Renovation
题目描述
伯兰德城市 S 的市长对美的理解和其他市民不同,特别地,他完全不能理解古老的房屋怎么会好看。因此,市长想要拆除城市里所有的古老建筑。
城市 S 很快将举办足球锦标赛。为了让城市变得美丽,每个月伯兰德政府都会为市长提供一笔资金。这笔钱必须用于古老建筑的翻新。
距离锦标赛还有 $n$ 个月,第 $i$ 个月的资金额度为 $a_i$ 布尔币。城市 S 有 $m$ 栋古老建筑,第 $j$ 栋建筑的翻新费用为 $b_j$ 布尔币。
然而,市长有自己的花钱计划。因为他不喜欢古老建筑,所以他想拆除尽可能多的古老建筑。对于第 $j$ 栋建筑,他计算出了其拆除费用 $p_j$。
市长决定按照下述计划行动:
每个月,他可以选择若干(也可以为 0)栋建筑,在这些建筑中,每一栋的翻新费用必须不大于该月的资金额度 $a_i$(即 $b_j \le a_i$),这样做可以让市民误以为这栋建筑即将被翻新。
然后,市长必须在本月内拆除所选的全部建筑,否则市民会发现欺骗,计划就会失败。显然,总拆除费用不能超过市长手头现有的资金。市长并不一定要把所有钱都用来拆除建筑;如果有剩余,可以存进银行账户,以便在以后的任意月份使用。此外,在某个月中,市长也可以选择不拆除任何建筑(在这种情况下,该月资金额度将全部被存下)。
你的任务是计算市长最多能拆除多少栋建筑。
输入格式
输入的第一行包含两个整数 $n$ 和 $m$($1\le n,m\le 100000$),分别表示距离锦标赛还有的月份数和城市 S 中的古老建筑数。
第二行包含 $n$ 个整数 $a_1, a_2, ..., a_n$($1\le a_i\le 10^9$),其中 $a_i$ 表示第 $i$ 个月的资金额度。
第三行包含 $m$ 个整数 $b_1, b_2, ..., b_m$($1\le b_j\le 10^9$),其中 $b_j$ 表示第 $j$ 栋建筑的翻新费用。
第四行包含 $m$ 个整数 $p_1, p_2, ..., p_m$($1\le p_j\le 10^9$),其中 $p_j$ 表示第 $j$ 栋建筑的拆除费用。
输出格式
输出一个整数,表示市长最多能拆除的建筑数量。
说明/提示
在第三个样例中,市长的操作如下:
第一月,他拿到 $6$ 布尔币额度,拆除了第 $2$ 栋(翻新费 $6$,拆除费 $4$)和第 $4$ 栋(翻新费 $5$,拆除费 $2$),花光了所有的钱。
第二月,他得到 $3$ 布尔币额度,只选择了第 $1$ 栋(翻新费 $3$,拆除费 $1$),结果存下 $2$ 布尔币以备日后使用。
第三月,他拿到 $2$ 布尔币,但选择不拆除任何建筑,这样他账上就有 $2+2=4$ 布尔币。
第四月,他用之前的储蓄和本月额度共 $4$ 布尔币,拆除了第 $3$ 栋和第 $5$ 栋(它们的翻新费用都是 $4$、拆除费用分别为 $3$ 和 $5$)。结束本月时钱全部花完。
最后,第五个月,拿到 $3$ 布尔币,拆除了第 $6$ 栋(翻新费 $2$,拆除费 $3$)。
可以看出,他总共拆除了 $6$ 栋建筑。
由 ChatGPT 5 翻译