CF178A2.Educational Game

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Educational Game

题目描述

来自 ABBYY 的聪明海狸开始开发一款新的儿童教育游戏。游戏规则相当简单,具体如下所述。

游戏场地是一串长度为 nn 的非负整数 aia_{i},编号从 11nn。游戏的目标是用最少的操作次数,使得某个前缀 a1,a2,...,aka_{1},a_{2},...,a_{k}(即前 kk 个数,k<nk<n)全部变为零。

每次操作可以选择一个整数 ii1in1 \leq i \leq n),且 ai>0a_{i} > 0,再选择一个整数 ttt0t \geq 0),使得 i+2tni+2^{t} \leq n。选定 iitt 后,将 aia_{i}11,同时将 ai+2ta_{i+2^{t}}11。例如,若 n=4n=4a=(1,0,1,2)a=(1,0,1,2),可以选择 i=3i=3t=0t=0,得到 a=(1,0,0,3)a=(1,0,0,3);或者选择 i=1i=1t=1t=1,得到 a=(0,0,2,2)a=(0,0,2,2)(唯一的其他可行操作是 i=1i=1t=0t=0)。

给定 nn 和初始序列 aia_{i},你的任务是,对于每个可能的 kk1k<n1 \leq k < n),计算将原序列的前 kk 个元素全部变为零所需的最小操作次数。

输入格式

第一行包含一个整数 nn
第二行包含 nn 个整数 aia_{i}0ai1040 \leq a_{i} \leq 10^{4}),用空格分隔。

获得 20 分的输入限制:

  • 1n3001 \leq n \leq 300

获得 50 分的输入限制:

  • 1n20001 \leq n \leq 2000

获得 100 分的输入限制:

  • 1n1051 \leq n \leq 10^{5}

输出格式

输出恰好 n1n-1 行,第 kk 行输出将原序列的前 kk 个元素全部变为零所需的最小操作次数。

请不要在 C++ 中使用 %lld 格式符来读写 64 位整数。建议使用 cin、cout 流,或 %I64d 格式符。

说明/提示

由 ChatGPT 4.1 翻译

样例

4
1 0 1 2
1
1
3
8
1 2 3 4 5 6 7 8
1
3
6
10
16
24
40

在线编程 IDE

建议全屏模式获得最佳体验