atcoder#ABC252F. [ABC252F] Bread

[ABC252F] Bread

题目描述

長さ L L のパンが 1 1 つあり、これを N N 人の子供たちに切り分けます。 i i 番目 (1 i N) (1\leq\ i\leq\ N) の子供は長さ Ai A_i のパンを欲しがっています。

そこで、高橋君は次の操作を繰り返して、長さ A1,A2,,AN A_1,A_2,\ldots,A_N のパンを切り出して配ることにしました。

長さ k k のパン 1 1 つと 1 1 以上 k1 k-1 以下の整数 x x を選ぶ。選んだパンを長さ x x のパンと 長さ kx k-x のパンに切り分ける。
このとき、x x の値によらずコストが k k かかる。

それぞれの子供に配るパンは長さがちょうど Ai A_i のパン 1 1 つである必要がありますが、誰にも配られずに余るパンがいくつあっても構いません。

このとき、全ての子供たちにパンを配るために必要な最小のコストを求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N L L A1 A_1 A2 A_2 \ldots AN A_N

输出格式

全ての子供たちにパンを配るために必要な最小のコストを出力せよ。

题目大意

你有一根长度为 LL 的面包,现在你要将它分给 NN 个孩子,第 ii 个孩子想要一根长度为 AiA_i 的面包。

对于一根长度为 kk 的面包,你可以选择一个在 1k11 \sim k - 1 的整数 xx,将面包切分成长度为 xxkxk - x 的两部分,这将花费 kk 的代价。

ii 个孩子获得的面包长度必须为 AiA_i,但我们允许有面包剩余。

请你花费最少的代价,将这根面包分给孩子们。

5 7
1 2 1 2 1
16
3 1000000000000000
1000000000 1000000000 1000000000
1000005000000000

提示

制約

  • 2  N  2× 105 2\ \leq\ N\ \leq\ 2\times\ 10^5
  • 1 Ai 109 1\leq\ A_i\leq\ 10^9
  • A1+A2++AN L 1015 A_1+A_2+\cdots+A_N\leq\ L\leq\ 10^{15}
  • 入力は全て整数

Sample Explanation 1

高橋君は次のようにしてパンを切り分けて配ることができます。 - 長さ 7 7 のパンと整数 x=3 x=3 を選ぶ。パンは長さ 3 3 のパンと長さ 4 4 のパンに切り分けられる。 (コスト 7 7 ) - 長さ 3 3 のパンと整数 x=1 x=1 を選ぶ。パンは長さ 1 1 のパンと長さ 2 2 のパンに切り分けられる。前者を 1 1 番目の子供に配る。 (コスト 3 3 ) - 長さ 2 2 のパンと整数 x=1 x=1 を選ぶ。パンは長さ 1 1 のパン 2 2 つに切り分けられる。これを 3,5 3,5 番目の子供に配る。 (コスト 2 2 ) - 長さ 4 4 のパンと整数 x=2 x=2 を選ぶ。パンは長さ 2 2 のパン 2 2 つに切り分けられる。これを 2,4 2,4 番目の子供に配る。 (コスト 4 4 ) このとき、コストは 7+3+2+4=16 7+3+2+4=16 かかり、これが最小です。 また、余るパンはありません。

Sample Explanation 2

それぞれの子供に配るパンの長さはちょうど Ai A_i でなければならない事に注意してください。