#P16307. [蓝桥杯 2026 省 Java/Python 研究生组] 抓取卡牌

[蓝桥杯 2026 省 Java/Python 研究生组] 抓取卡牌

题目描述

nn 种不同的卡牌,其中第 ii 种卡牌的基础价值为 viv_i,数量为 aia_i 张。

你需要从这些卡牌中恰好选出 XX 张,组成自己的卡组。

对于同一种卡牌,随着你选取的数量增加,它后续的价值会下降。具体地,若某种基础价值为 vv 的卡牌已经被选了 kk 张,那么下一张这种卡牌的价值为:

vk+1\left\lfloor \frac{v}{k + 1} \right\rfloor

x\lfloor x \rfloor 表示对 xx 向下取整,即不超过 xx 的最大整数。

也就是说:

  • 选第 11 张该种卡牌时,价值为 v1=v\left\lfloor \frac{v}{1} \right\rfloor = v
  • 选第 22 张时,价值为 v2\left\lfloor \frac{v}{2} \right\rfloor
  • 选第 33 张时,价值为 v3\left\lfloor \frac{v}{3} \right\rfloor
  • 依此类推。

每种卡牌至多只能选取 aia_i 张。

现在,请你计算:恰好选出 XX 张卡牌时,能够得到的最大总价值是多少。

输入格式

输入共三行。

第一行包含两个整数 n,Xn, X,分别表示卡牌种类数和需要选取的卡牌总数。

第二行包含 nn 个整数 v1,v2,,vnv_1, v_2, \dots, v_n,表示每种卡牌的基础价值。

第三行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n,表示每种卡牌可供选取的数量。

输出格式

输出一行一个整数,表示最大总价值。

6 6
1 1 2 3 4 5
1 2 1 2 3 4
18

提示

【样例说明】

将所有可能选取的单张卡牌价值展开后,可得:

  • 11 种卡牌可贡献:11
  • 22 种卡牌可贡献:1,01, 0
  • 33 种卡牌可贡献:22
  • 44 种卡牌可贡献:3,13, 1
  • 55 种卡牌可贡献:4,2,14, 2, 1
  • 66 种卡牌可贡献:5,2,1,15, 2, 1, 1

从中选出最大的 66 个值:5,4,3,2,2,25, 4, 3, 2, 2, 2,它们的和为:5+4+3+2+2+2=185+4+3+2+2+2 = 18,因此答案为 1818

【评测用例规模与约定】

对于 50%50\% 的评测用例,1n,X50001 \le n, X \le 5000

对于所有的评测用例,满足:1n2×1051 \le n \le 2 \times 10^50X,ai2×1050 \le X, a_i \le 2 \times 10^50vi1090 \le v_i \le 10^9

保证所有卡牌总数不少于 XX