P16307 [蓝桥杯 2026 省 Java/Python 研究生组] 抓取卡牌
题目描述
有 $n$ 种不同的卡牌,其中第 $i$ 种卡牌的基础价值为 $v_i$,数量为 $a_i$ 张。
你需要从这些卡牌中恰好选出 $X$ 张,组成自己的卡组。
对于同一种卡牌,随着你选取的数量增加,它后续的价值会下降。具体地,若某种基础价值为 $v$ 的卡牌已经被选了 $k$ 张,那么下一张这种卡牌的价值为:
$$
\left\lfloor \frac{v}{k + 1} \right\rfloor
$$
$\lfloor x \rfloor$ 表示对 $x$ 向下取整,即不超过 $x$ 的最大整数。
也就是说:
- 选第 $1$ 张该种卡牌时,价值为 $\left\lfloor \frac{v}{1} \right\rfloor = v$;
- 选第 $2$ 张时,价值为 $\left\lfloor \frac{v}{2} \right\rfloor$;
- 选第 $3$ 张时,价值为 $\left\lfloor \frac{v}{3} \right\rfloor$;
- 依此类推。
每种卡牌至多只能选取 $a_i$ 张。
现在,请你计算:恰好选出 $X$ 张卡牌时,能够得到的最大总价值是多少。
输入格式
输入共三行。
第一行包含两个整数 $n, X$,分别表示卡牌种类数和需要选取的卡牌总数。
第二行包含 $n$ 个整数 $v_1, v_2, \dots, v_n$,表示每种卡牌的基础价值。
第三行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$,表示每种卡牌可供选取的数量。
输出格式
输出一行一个整数,表示最大总价值。
说明/提示
### 【样例说明】
将所有可能选取的单张卡牌价值展开后,可得:
- 第 $1$ 种卡牌可贡献:$1$
- 第 $2$ 种卡牌可贡献:$1, 0$
- 第 $3$ 种卡牌可贡献:$2$
- 第 $4$ 种卡牌可贡献:$3, 1$
- 第 $5$ 种卡牌可贡献:$4, 2, 1$
- 第 $6$ 种卡牌可贡献:$5, 2, 1, 1$
从中选出最大的 $6$ 个值:$5, 4, 3, 2, 2, 2$,它们的和为:$5+4+3+2+2+2 = 18$,因此答案为 $18$。
### 【评测用例规模与约定】
对于 $50\%$ 的评测用例,$1 \le n, X \le 5000$;
对于所有的评测用例,满足:$1 \le n \le 2 \times 10^5$,$0 \le X, a_i \le 2 \times 10^5$,$0 \le v_i \le 10^9$。
保证所有卡牌总数不少于 $X$。