AT_agc062_b [AGC062B] Split and Insert
题目描述
有一个由 $1$ 到 $N$ 的整数构成的排列 $A=(A_1,A_2,\dots,A_N)$。初始时 $A_i=i\ (1\leq i \leq N)$。
高桥君对这个排列进行如下操作 $K$ 次:
- 选择一个满足 $0\leq k < N$ 的整数 $k$。将 $A$ 的最后 $k$ 项插入到前 $N-k$ 项中。更准确地说,将 $A$ 替换为任意满足以下条件的长度为 $N$ 的排列 $A'$:
- $(A_1,A_2,\dots,A_{N-k})$ 是 $A'$ 的(不一定连续的)子序列。
- $(A_{N-k+1},A_{N-k+2},\dots,A_{N})$ 是 $A'$ 的(不一定连续的)子序列。
第 $i$ 次操作选择的 $k$ 为 $k_i$ 时,这一系列操作的总代价为 $\sum_{i=1}^{K}k_iC_i$。
高桥君希望经过 $K$ 次操作后,使 $A=(P_1,P_2,\dots,P_N)$ 成立。
请判断是否存在这样的操作序列。如果存在,求出使 $A=(P_1,P_2,\dots,P_N)$ 的最小总代价。
输入格式
输入按以下格式从标准输入给出。
> $N$ $K$ $C_1$ $C_2$ $\dots$ $C_K$ $P_1$ $P_2$ $\dots$ $P_N$
输出格式
如果无法通过 $K$ 次操作使 $A=(P_1,P_2,\dots,P_N)$,请输出 `-1`。
如果可以,请输出使 $A=(P_1,P_2,\dots,P_N)$ 的最小总代价。
说明/提示
### 限制条件
- $2\leq N\leq 100$
- $1\leq K\leq 100$
- $1\leq C_i\leq 10^9$
- $(P_1,P_2,\dots,P_N)$ 是 $1$ 到 $N$ 的一个排列
- 输入的所有值均为整数
### 样例解释 1
操作时选择 $k=2$,将 $A_3=3$ 插入到 $A_1,A_2$ 之前,将 $A_4=4$ 插入到 $A_1,A_2$ 之后,可以得到 $A=(3,1,2,4)$,满足 $A=(P_1,P_2,P_3,P_4)$。此操作的总代价为 $2\times C_1=6$。可以证明,使 $A=(P_1,P_2,P_3,P_4)$ 的最小总代价为 $6$。
### 样例解释 2
无法通过操作使 $A=(P_1,P_2,P_3,P_4)$ 成立。
由 ChatGPT 4.1 翻译