QOJ.ac

QOJ

Time Limit: 1.0 s Memory Limit: 1024 MB Total points: 100 Hackable ✓

#18602. 分散システム

Statistics

ある会社には $n$ 台のサーバがあり、$1$ から $n$ まで番号が付けられています。$i$ 番目のサーバは $a_i$ 個のサービスを実行しています。

サーバは時々停止することがあるため、各サーバに対してバックアップ用のサーバが定義されています。番号 $i$ のサーバに対して、バックアップは番号 $p_i$ のサーバです。$i$ 番目のサーバについて $p_i = i$ である場合、そのサーバは高信頼性サーバであり、決して停止しません。

任意の異なる 2 つのサーバ $i$ と $j$ に対して、それらのバックアップサーバの番号 $p_i$ と $p_j$ は異なります。したがって、$p$ は長さ $n$ の置換であり、$1$ から $n$ までの各数が $p_1, \dots, p_n$ の中にちょうど 1 回現れることを意味します。

サーバの停止プロセスは次のように行われます。サーバ $i$ が停止すると、その上で実行されているすべてのサービスは番号 $p_i$ のサーバに移動され、サーバ $i$ はサービスが何も実行されていない新しいサーバに置き換えられます。このサーバの番号とそのバックアップサーバの番号は変わりません。サービスの移動とサーバの置き換えは非常に高速なプロセスであり、その間新しい停止は発生しません。

会社はシステムの性能テストを実施する予定です。そのために、最大 $k$ 台のサーバが停止されます。停止は順次実行され、つまり 2 台のサーバが同時に停止することはありません。最大 $k$ 台のサーバを停止した後に、1 台のサーバ上に集まるサービスの最大数を求めてください。

入力

1 行目には 2 つの整数 $n$ と $k$ ($1 \leqslant k < n \leqslant 10^5$) が与えられます。 — サーバの台数と停止できるサーバの最大数です。

2 行目には $n$ 個の整数 $a_1, a_2, \dots, a_n$ ($0 \leqslant a_i \leqslant 10^9$) が与えられます。 — 各サーバで実行されているサービスの数です。

3 行目には $n$ 個の整数 $p_1, p_2, \dots, p_n$ ($1 \leqslant p_i \leqslant n$) が与えられます。 — バックアップサーバの番号です。

出力

答えとなる整数を 1 つ出力せよ。

小課題

| :---: | :---: | :---: | :---: | | 小課題 | 点数 | 制約 | 必要な小課題 | | 1 | 15 | $n \leqslant 1000$, $k = 1$ | — | | 2 | 27 | $n \leqslant 1000$ | 1 | | 3 | 21 | $p_i = i \pmod n + 1$ | — | | 4 | 37 | — | 1, 2, 3 |

入出力例

入力 1

4 2
6 10 7 9
2 3 4 1

出力 1

26

入力 2

3 1
1000000000 993 2010
1 3 2

出力 2

1000000000

入力 3

11 5
3 5 12 7 5 9 2 6 0 9 4
2 8 9 6 5 11 3 1 10 7 4

出力 3

23

注記

最大の答えを達成できるサーバの停止順序を考えます。

サーバが停止したときのサービスの移動の仕組みを思い出してください。

サーバ 1 2 3 4
バックアップ 2 3 4 1

最初にサーバ 2 が停止します。そのサービスはサーバ 3 に移動し、サーバ 3 のサービスは $10 + 7 = 17$ になります。

次にサーバ 3 が停止します。そのサービスはサーバ 4 に移動し、サーバ 4 のサービスは $9 + 17 = 26$ になります。

理解を深めるために、以下の表は上記のプロセスにおける各サーバのサービス数を記録したものです。

段階 $a_1$ $a_2$ $a_3$ $a_4$
最初の停止前 6 10 7 9
サーバ 2 の停止後 6 0 17 9
サーバ 3 の停止後 6 0 0 26

もし最初にサーバ 3 が停止し、次にサーバ 2 が停止した場合、プロセスは次のようになります。

段階 $a_1$ $a_2$ $a_3$ $a_4$
最初の停止前 6 10 7 9
サーバ 3 の停止後 6 10 0 16
サーバ 2 の停止後 6 0 10 16

この場合、サーバ上のサービスの最大数は 16 となり、最適な答えではありません。

2 番目の例では、可能な選択肢の 1 つはサーバを 1 台も停止しないことです。その場合、最初のサーバに $1000000000$ 個のサービスがあり、それが答えになります。サーバ 2 またはサーバ 3 を停止しても、最大のサービス数はやはり最初のサーバになります。

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.