P6496 [COCI 2016/2017 #2] Nizin

题目描述

设 $A$ 是一个含有 $n$ 个元素的数组,其中各元素的编号为 $1\dots n$。若对于任意整数 $i\in [1,n]$ 都有 $A_i=A_{n-i+1}$,则称 $A$ 是一个「回文数组」。 Mislav 可以通过以下方式修改一个数组: 1. 选择两个**相邻**的元素。 2. 将这两个元素**替换**为一个新的元素,值为它们的和。 现在,给出一个数组。请你计算在至少多少次修改后,Mislav 可以将其修改为一个「回文数组」。

输入格式

第一行一个整数 $n$,表示数组中元素的个数。 接下来一行 $n$ 个整数 $a_i$,表示数组中的元素。

输出格式

一行,一个整数,表示 Mislav 至少需要修改数组的次数。

说明/提示

#### 【样例解释】 使用 `[]` 标记 Mislav 修改时所选择的两个数。 **样例 1 解释** `[1 2] 3` -> `3 3`。 **样例 2 解释** `1 [2 4] 6 1` -> `1 6 6 1`。 **样例 3 解释** `[1 4] 3 2` -> `5 [3 2]` -> `5 5`。 ------------ #### 【数据规模与约定】 - 对于 $30\%$ 的数据,保证 $n \leq 10$。 - 对于 $60\%$ 的数据,保证 $n \leq 10^3$。 - 对于 $100\%$ 的数据,保证 $1\le n\le 10^6$,$1\le a_i\le 10^9$。 ------------ #### 【说明】 **题目译自 [COCI2016-2017](https://hsin.hr/coci/archive/2016_2017/) [CONTEST #2](https://hsin.hr/coci/archive/2016_2017/contest2_tasks.pdf) _T3 Nizin_**。