AT_abc252_f.[ABC252F] Bread
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有一块长度为 L 的面包,需要将其分给 N 个孩子。第 i 个孩子(1≤i≤N)想要长度为 Ai 的面包。
高桥君可以重复进行如下操作,将长度为 A1,A2,…,AN 的面包切出来并分发:
选择一块长度为 k 的面包和一个整数 x,其中 1≤x≤k−1。将选中的面包切分为长度为 x 和 k−x 的两块面包。
无论 x 取何值,每次切割的花费都是 k。
每个孩子只能分到一块长度恰好为 Ai 的面包,剩余的面包可以有任意多块,不需要分配。
请你求出,为了分给所有孩子面包所需的最小总花费。
输入格式
输入通过标准输入给出,格式如下:
N L A1 A2 … AN
输出格式
输出分给所有孩子面包所需的最小总花费。
输入输出样例
输入#1
5 7 1 2 1 2 1
输出#1
16
输入#2
3 1000000000000000 1000000000 1000000000 1000000000
输出#2
1000005000000000
说明/提示
限制条件
- 2≤N≤2×105
- 1≤Ai≤109
- A1+A2+⋯+AN≤L≤1015
- 所有输入均为整数
样例解释 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
请注意,每个孩子分到的面包长度必须恰好为 Ai。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?