atcoder#ABC175D. [ABC175D] Moving Piece

[ABC175D] Moving Piece

配点 : 400400

問題文

高橋君は 1,2,,N1, 2, \cdots, N の番号のついた NN マスから成るマス目の上で、コマを使ってゲームを行おうとしています。マス ii には整数 CiC_i が書かれています。また、1,2,N1, 2 \cdots , N の順列 P1,P2,,PNP_1, P_2, \cdots, P_N が与えられています。

これから高橋君は好きなマスを 11 つ選んでコマを 11 つ置き、11 回以上 KK 回以下の好きな回数だけ、次のような方法でコマを移動させます。

  • 11 回の移動では、現在コマがマス i(1iN)i (1 \leq i \leq N) にあるなら、コマをマス PiP_i に移動させる。このとき、スコアに CPiC_{P_i} が加算される。

高橋君のために、ゲーム終了時のスコアとしてあり得る値の最大値を求めてください。(ゲーム開始時のスコアは 00 です。)

制約

  • 2N50002 \leq N \leq 5000
  • 1K1091 \leq K \leq 10^9
  • 1PiN1 \leq P_i \leq N
  • PiiP_i \neq i
  • P1,P2,,PNP_1, P_2, \cdots, P_N は全て異なる
  • 109Ci109-10^9 \leq C_i \leq 10^9
  • 入力は全て整数である

入力

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

NN KK

P1P_1 P2P_2 \cdots PNP_N

C1C_1 C2C_2 \cdots CNC_N

出力

ゲーム終了時のスコアとしてあり得る値の最大値を出力せよ。

5 2
2 4 5 1 3
3 4 -10 -8 8
8

好きなマスから始めて 22 回以下コマを移動させる方法は以下の通りです。

  • 初めマス 11 にコマを置く場合。11 回移動するとマス 22 に動き、スコアが 44 になる。22 回移動するとマス 44 に動き、スコアが 4+(8)=44 + (-8) = -4 になる。
  • 初めマス 22 にコマを置く場合。11 回移動するとマス 44 に動き、スコアが 8-8 になる。22 回移動するとマス 11 に動き、スコアが 8+3=5-8 + 3 = -5 になる。
  • 初めマス 33 にコマを置く場合。11 回移動するとマス 55 に動き、スコアが 88 になる。22 回移動するとマス 33 に動き、スコアが 8+(10)=28 + (-10) = -2 になる。
  • 初めマス 44 にコマを置く場合。11 回移動するとマス 11 に動き、スコアが 33 になる。22 回移動するとマス 22 に動き、スコアが 3+4=73 + 4 = 7 になる。
  • 初めマス 55 にコマを置く場合。11 回移動するとマス 33 に動き、スコアが 10-10 になる。22 回移動するとマス 55 に動き、スコアが 10+8=2-10 + 8 = -2 になる。

これらの最大値は 88 です。

2 3
2 1
10 -7
13
3 3
3 1 2
-1000 -2000 -3000
-1000

最低 11 回はコマを移動させる必要があります。

10 58
9 1 6 7 8 4 3 2 10 5
695279662 988782657 -119067776 382975538 -151885171 -177220596 -169777795 37619092 389386780 980092719
29507023469

答えの絶対値は非常に大きくなる場合があります。