AT_abc252_f [ABC252F] Bread
题目描述
有一块长度为 $L$ 的面包,需要将其分给 $N$ 个孩子。第 $i$ 个孩子($1\leq i\leq N$)想要长度为 $A_i$ 的面包。
高桥君可以重复进行如下操作,将长度为 $A_1,A_2,\ldots,A_N$ 的面包切出来并分发:
> 选择一块长度为 $k$ 的面包和一个整数 $x$,其中 $1\leq x\leq k-1$。将选中的面包切分为长度为 $x$ 和 $k-x$ 的两块面包。
> 无论 $x$ 取何值,每次切割的花费都是 $k$。
每个孩子只能分到一块长度恰好为 $A_i$ 的面包,剩余的面包可以有任意多块,不需要分配。
请你求出,为了分给所有孩子面包所需的最小总花费。
输入格式
输入通过标准输入给出,格式如下:
> $N$ $L$ $A_1$ $A_2$ $\ldots$ $A_N$
输出格式
输出分给所有孩子面包所需的最小总花费。
说明/提示
## 限制条件
- $2\leq N\leq 2\times 10^5$
- $1\leq A_i\leq 10^9$
- $A_1+A_2+\cdots+A_N\leq L\leq 10^{15}$
- 所有输入均为整数
## 样例解释 1
高桥君可以按如下方式切分面包并分发:
- 选择长度为 $7$ 的面包和整数 $x=3$。面包被切分为长度为 $3$ 和 $4$ 的两块面包。(花费 $7$)
- 选择长度为 $3$ 的面包和整数 $x=1$。面包被切分为长度为 $1$ 和 $2$ 的两块面包。将长度为 $1$ 的面包分给第 $1$ 个孩子。(花费 $3$)
- 选择长度为 $2$ 的面包和整数 $x=1$。面包被切分为两个长度为 $1$ 的面包。将这两块面包分给第 $3$ 和第 $5$ 个孩子。(花费 $2$)
- 选择长度为 $4$ 的面包和整数 $x=2$。面包被切分为两个长度为 $2$ 的面包。将这两块面包分给第 $2$ 和第 $4$ 个孩子。(花费 $4$)
此时,总花费为 $7+3+2+4=16$,这是最小值。没有剩余面包。
## 样例解释 2
请注意,每个孩子分到的面包长度必须恰好为 $A_i$。
由 ChatGPT 4.1 翻译