QOJ.ac

QOJ

Time Limit: 2.0 s Memory Limit: 256 MB Total points: 100 Hackable ✓

#14096. カラフルな順列のソート

Statistics

$1$ から $n$ までの整数の順列 $p_1,p_2,\ldots,p_n$ が与えられます。$1$ から $n$ までの各位置は $k$ 色のいずれかで塗られています。この順列をソートするため、次の操作を任意の回数行うことができます。

  • 任意の 2 つの要素を交換する。この操作には $S$ 枚のコインがかかります。
  • 任意の色 $i$ を選び、その色の位置にある要素を好きなように並べ替える。この操作には $C_i$ 枚のコインがかかります。

色が付いているのは要素ではなく位置なので、2 つの要素を交換しても位置の色は変わりません。

順列をソートするために必要なコインの最小枚数を求めてください。

入力

最初の行には、処理する独立したテストケースの数を表す整数 $T$($1\le T\le10^3$)が与えられます。続いて各テストケースの説明が与えられます。

各テストケースの最初の行には、順列の長さと色の数を表す整数 $n,k$($1\le n\le10^5$, $1\le k\le5$)が与えられます。

2 行目には、操作の費用を表す $k+1$ 個の整数 $S,C_1,C_2,\ldots,C_k$($0\le S,C_i\le10^9$)が与えられます。

3 行目には、順列を表す $n$ 個の整数 $p_1,p_2,\ldots,p_n$($1\le p_i\le n$、すべての $p_i$ は異なる)が与えられます。

4 行目には、各位置の色を表す $n$ 個の整数 $col_i$($1\le col_i\le k$)が与えられます。

1 つの入力ファイル内の全テストケースにわたる $n$ の総和は $10^5$ 以下です。

出力

各テストケースについて、順列をソートするために必要なコインの最小枚数を整数で出力してください。

入出力例

入力 1

4
4 1
1 10
2 3 4 1
1 1 1 1
4 1
10 1
2 3 4 1
1 1 1 1
6 2
10 1 1
5 2 4 6 1 3
1 2 1 2 1 2
4 3
6 7 8 9
1 2 3 4
2 2 3 2

出力 1

3
1
12
0

注記

最初のテストケースでは、「交換」操作を 3 回行うことで順列をソートできます:$(2,3,4,1)\to(4,3,2,1)\to(4,2,3,1)\to(1,2,3,4)$。この方法では 3 枚のコインを使います。

色 $1$ の位置にあるすべての要素を並べ替える方法もありますが、これには 10 枚のコインがかかり、もっと安くできます。

しかし、2 番目のテストケース(最初のケースとは操作の費用だけが異なります)では、色 $1$ の位置にあるすべての要素を並べ替え、コインを 1 枚使う方が安くなります。

3 番目のテストケースの最適な操作列の一つは次のとおりです。

  • 色 $2$ の位置にある要素を並べ替え、順列 $(5,2,4,3,1,6)$ を得ます。この操作にはコインが 1 枚かかります。
  • 要素 $p_3,p_4$ を交換します。順列は $(5,2,3,4,1,6)$ になります。この操作にはコインが 10 枚かかります。
  • 色 $1$ の位置にある要素を並べ替え、順列 $(1,2,3,4,5,6)$ を得ます。この操作にはコインが 1 枚かかります。

合計で 12 枚のコインを使いました。

4 番目のテストケースでは、順列はすでにソートされているので、コインを使う必要はありません。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.