atcoder#AGC062B. [AGC062B] Split and Insert

[AGC062B] Split and Insert

题目描述

1 1 から N N までの整数からなる順列 A=(A1,A2,,AN) A=(A_1,A_2,\dots,A_N) があります。はじめ Ai=i (1 i  N) A_i=i\ (1\leq\ i\ \leq\ N) です。

高橋君はこの順列に対し以下のような操作を K K 回行います。

  • 0  k < N 0\ \leq\ k\ <\ N を満たす整数 k k を選ぶ。A A の後ろ k k 項を前 Nk N-k 項に挿入する。より正確には、A A を以下の条件を満たす長さ N N の好きな順列 A A' で置き換える。
    • (A1,A2,,ANk) (A_1,A_2,\dots,A_{N-k}) A A' の(連続とは限らない)部分列である。
    • (ANk+1,ANk+2,,AN) (A_{N-k+1},A_{N-k+2},\dots,A_{N}) A A' の(連続とは限らない)部分列である。

i i 回目の操作で選んだ k k ki k_i としたとき、一連の操作にかかるコストは i=1KkiCi \sum_{i=1}^{K}k_iC_i です。

高橋君は K K 回の操作の後、A=(P1,P2,,PN) A=(P_1,P_2,\dots,P_N) が成り立つように操作を行いたいです。

そのように一連の操作を行うことが可能か判定してください。可能な場合、そのような一連の操作にかかるコストの最小値を求めてください。

输入格式

入力は以下の形式で標準入力から与えられます。

N N K K C1 C_1 C2 C_2 \dots CK C_K P1 P_1 P2 P_2 \dots PN P_N

输出格式

K K 回の操作の後、A=(P1,P2,,PN) A=(P_1,P_2,\dots,P_N) が成り立つように操作を行うことが不可能な場合、 -1 を出力してください。可能な場合、そのような一連の操作のコストの最小値を出力してください。

题目大意

给定一个排列 A=(A1,A2,,AN)A=(A_1,A_2,\dots,A_N) 。一开始,排列满足 Ai=i (1iN)A_i=i\ (1\leq i \leq N)。接下来高桥会进行 KK 次操作,操作如下:

  • 任意选择一个 kk ,选择排列最末尾 kk 个元素,将其插入进前面 nkn-k 个元素。形式化的,操作之后的排列需要满足:
    1. (A1,A2,,ANk)(A_1,A_2,\dots,A_{N-k}) 是一个操作后排列子序列(不要求连续)
    2. (ANk+1,ANk+2,,AN)(A_{N-k+1},A_{N-k+2},\dots,A_{N}) 是操作后排列的一个子序列(不要求连续)

定义所有操作的代价是 i=1KkiCi\sum_{i=1}^{K}k_iC_i,其中 kik_i 表示第 ii 轮选择的 kk

现在高桥君想问你能否在 KK 次以内将排列变为 (P1,P2,,PN)(P_1,P_2,\dots,P_N),如果可以输出最小代价,如果不能输出 1-1

4 1
3
3 1 2 4
6
4 1
3
4 3 2 1
-1
20 10
874735445 684260477 689935252 116941558 915603029 923404262 843759669 656978932 286318130 255195090
11 15 20 10 6 8 18 2 12 4 9 13 19 3 16 7 14 17 5 1
7372920743

提示

制約

  • 2  N  100 2\ \leq\ N\ \leq\ 100
  • 1  K  100 1\ \leq\ K\ \leq\ 100
  • 1  Ci  109 1\ \leq\ C_i\ \leq\ 10^9
  • (P1,P2,,PN) (P_1,P_2,\dots,P_N) 1 1 から N N までの整数からなる順列
  • 入力される値はすべて整数

Sample Explanation 1

操作で k=2 k=2 とし、A3=3 A_3=3 A1,A2 A_1,A_2 より前に、 A4=4 A_4=4 A1,A2 A_1,A_2 の後に挿入することで A=(3,1,2,4) A=(3,1,2,4) とすることができ、 A=(P1,P2,P3,P4) A=(P_1,P_2,P_3,P_4) が成り立ちます。この操作のコストは 2 × C1 = 6 2\ \times\ C_1\ =\ 6 です。 操作後、 A=(P1,P2,P3,P4) A=(P_1,P_2,P_3,P_4) が成り立つように操作するとき、コストの最小値は 6 6 であることが証明できます。

Sample Explanation 2

操作後、A=(P1,P2,P3,P4) A=(P_1,P_2,P_3,P_4) が成り立つように操作することはできません。