E. 噜噜发现了糖果宝库

    传统题 1000ms 256MiB

噜噜发现了糖果宝库

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

噜噜发现了糖果宝库

1. 题目背景

小探险家噜噜和它聪明的小伙伴“一只羊”发现了一个古老的糖果宝库!宝库里有 NN 排糖果堆,但拿取这些糖果有一个奇特的规则。作为未来的编程高手,噜噜希望你能帮它计算一下,按照这个规则它最多能拿到多少糖果。

2. 问题描述

一共有 NN 堆糖果,从左到右依次编号为 1,2,,N1, 2, \ldots, N。第 ii 堆糖果有 aia_i 颗。 噜噜会从第一堆开始,依次决定从每一堆糖果中拿出多少颗。拿取规则如下:

  1. 对于第一堆糖果 (编号为1),噜噜会拿出 a1a_1 颗糖果 (即,它会拿走第一堆中的全部糖果)。
  2. 对于第 ii 堆糖果 (当 i>1i > 1 时),设噜噜从前面 i1i-1 堆(即编号为 11i1i-1 的所有堆)中总共拿出的糖果数量之和为 Si1S_{i-1}。噜噜从第 ii 堆可以拿出的糖果数量 tit_i 必须满足以下两个条件:
    • tiait_i \le a_i (不能超过当前堆本身拥有的糖果数)。
    • tiSi1t_i \le S_{i-1} (不能超过前面所有堆已拿出糖果的总和)。
    • 如果 Si1=0S_{i-1} = 0 (即前面没有拿出任何糖果),则 tit_i 必须为 00

噜噜总是想在规则允许的范围内,从当前考虑的堆中拿出尽可能多的糖果。请你计算,按照这个规则,噜噜最终能拿到的糖果总数。

3. 输入格式

第一行一个整数 NN,表示糖果的堆数。 第二行 NN 个整数 a1,a2,,aNa_1, a_2, \ldots, a_N,用空格隔开,表示每堆糖果的数量。

4. 输出格式

一个整数,表示噜噜按照规则最多能拿出的糖果总数。

5. 样例输入与输出

样例输入 1:

4
10 3 7 2

样例输出 1:

22

样例解释 1:

  • 第1堆 (a1=10a_1=10): 噜噜拿出 a1=10a_1 = 10 颗。
    • 已拿出糖果总和 S1=10S_1 = 10。 最终收集到的总糖果数 = 10。
  • 第2堆 (a2=3a_2=3): 前面已拿出糖果总和 S1=10S_1 = 10
    • 噜噜可拿出 min(a2,S1)=min(3,10)=3\min(a_2, S_1) = \min(3, 10) = 3 颗。
    • 已拿出糖果总和 S2=S1+3=10+3=13S_2 = S_1 + 3 = 10 + 3 = 13。 最终收集到的总糖果数 = 10 + 3 = 13。
  • 第3堆 (a3=7a_3=7): 前面已拿出糖果总和 S2=13S_2 = 13
    • 噜噜可拿出 min(a3,S2)=min(7,13)=7\min(a_3, S_2) = \min(7, 13) = 7 颗。
    • 已拿出糖果总和 S3=S2+7=13+7=20S_3 = S_2 + 7 = 13 + 7 = 20。 最终收集到的总糖果数 = 13 + 7 = 20。
  • 第4堆 (a4=2a_4=2): 前面已拿出糖果总和 S3=20S_3 = 20
    • 噜噜可拿出 min(a4,S3)=min(2,20)=2\min(a_4, S_3) = \min(2, 20) = 2 颗。
    • 已拿出糖果总和 S4=S3+2=20+2=22S_4 = S_3 + 2 = 20 + 2 = 22。 最终收集到的总糖果数 = 20 + 2 = 22。

最终,噜噜最多能拿出 22 颗糖果。

样例输入 2:

5
5 12 3 20 8

样例输出 2:

34

样例解释 2:

  • 第 1 堆(a_1=5a\_1=5):取走 5,累计 S_1=5S\_1=5,总共取走 5。
  • 第 2 堆(a_2=12a\_2=12):受限于 S_1=5S\_1=5,取走 min(12,5)=5\min(12,5)=5,累计 S_2=5+5=10S\_2=5+5=10,总共取走 5+5=105+5=10
  • 第 3 堆(a_3=3a\_3=3):受限于 S_2=10S\_2=10,取走 min(3,10)=3\min(3,10)=3,累计 S_3=10+3=13S\_3=10+3=13,总共取走 10+3=1310+3=13
  • 第 4 堆(a_4=20a\_4=20):受限于 S_3=13S\_3=13,取走 min(20,13)=13\min(20,13)=13,累计 S_4=13+13=26S\_4=13+13=26,总共取走 13+13=2613+13=26
  • 第 5 堆(a_5=8a\_5=8):受限于 S_4=26S\_4=26,取走 min(8,26)=8\min(8,26)=8,累计 S_5=26+8=34S\_5=26+8=34,总共取走 26+8=3426+8=34

6. 数据规模与约定

对于所有测试数据,满足 1N1051 \le N \le 10^50ai1090 \le a_i \le 10^9

子任务编号 NN 的范围 aia_i 的范围 特殊约定 分值比例
1 1N101 \le N \le 10 0ai1000 \le a_i \le 100 20%
2 1N10001 \le N \le 1000 0ai10000 \le a_i \le 1000
3 1N1051 \le N \le 10^5 ai{0,1}a_i \in \{0, 1\} 所有 aia_i 只会是0或1
4 1N601 \le N \le 60 0ai1090 \le a_i \le 10^9 a1a_1 较大 (>0>0)。对于 i>1i>1, aia_i 的值足够大,保证 aiSi1a_i \ge S_{i-1} 总是成立 (除非 Si1S_{i-1} 超过 10910^9, 此时 aia_i10910^9)。主要测试累加和的快速增长。
5 1N1051 \le N \le 10^5 无,为完整数据范围。

「果壳语法杯」ROUND #3 (Div.5)

未参加
状态
已结束
规则
IOI
题目
5
开始于
2025-5-16 19:00
结束于
2025-5-18 21:00
持续时间
2 小时
主持人
参赛人数
62