P9375 「DROI」Round 2 划分

题目背景

与其编写苍白无力的背景,不如出更有质量的题。

题目描述

给定长度为 $n$ 的序列 $A$。 定义序列 $A$ 的某个子段 $[L,R]$ 的权值为: $$ \sum_{i=L}^{R}[\vert A_i - A_L \vert是完全平方数] \times \sum_{i=L}^{R}[\vert A_R - A_i \vert是完全平方数]$$ 现在你需要将序列 $A$ **不重不漏**地划分成若干个子段,使得对于 $\forall i \in [1,n]$,长度为 $i$ 的子段有 $c_i$ 个。 在此基础上,求一种划分方案使所有子段权值和最大,输出这个最大值即可。特殊地,若不存在任意一种划分方案,则输出 `-1`。 **对题意不清楚的,可见下方说明提示。**

输入格式

首先输入一个整数 $n$,表示序列 $A$ 的长度。 然后输入一行 $n$ 个数,其中第 $i$ 个数表示 $A_i$。 最后再输入一行 $n$ 个数,其中第 $i$ 个数表示 $c_i$。

输出格式

输出一行一个整数,表示答案。

说明/提示

#### 样例解释 对于样例一,一种最优划分是分别在第二、三个数后面将序列断开。 对于样例二,一种最优划分是分别在第三、四、五、八个数后面将序列断开。 ------------ #### 数据范围 **「本题采用捆绑测试」** - $\operatorname{Subtask} 1(10\%)$:$n \leq 20$。 - $\operatorname{Subtask} 2(20\%)$:$n \leq 50,\sum_{i=1}^{n}c_i \leq 20$。 - $\operatorname{Subtask} 3(20\%)$:$n \leq 50,\forall i>5,c_i=0$。 - $\operatorname{Subtask} 4(50\%)$:无特殊限制。 对于 $100\%$ 的数据:$0 \leq c_i\leq n \leq 120,1 \leq a_i \leq 10^4$。 ------------ #### 说明提示 - 我们规定,$0$ 是完全平方数。 - $[P]=1$ 当且仅当 $P$ 是真命题,否则 $[P]=0$。