QOJ.ac

QOJ

Limite de temps : 1.0 s Limite de mémoire : 1024 MB Points totaux : 100 Hackable ✓

#18602. 분산 시스템

Statistiques

한 회사에는 $1$부터 $n$까지 번호가 매겨진 $n$개의 서버가 있습니다. $i$번째 서버는 $a_i$개의 서비스를 실행합니다.

때때로 서버가 종료될 수 있으므로 각 서버에 대해 백업 서버가 정의되어 있습니다. 번호가 $i$인 서버의 백업은 번호가 $p_i$인 서버입니다. $i$번째 서버에 대해 $p_i = i$이면, 이는 고신뢰성 서버이며 절대 종료되지 않습니다.

서로 다른 두 서버 $i$와 $j$에 대해, 그들의 백업 서버 번호 $p_i$와 $p_j$는 서로 다릅니다. 따라서 $p$는 길이 $n$의 순열이며, $1$부터 $n$까지의 각 번호가 $p_1, \dots, p_n$ 값들 사이에 정확히 한 번씩 나타납니다.

서버 종료 과정은 다음과 같이 진행됩니다: 서버 $i$가 종료되면, 그 서버에서 실행 중인 모든 서비스는 번호 $p_i$인 서버로 이동하고, 서버 $i$는 어떤 서비스도 실행하지 않는 새 서버로 교체됩니다. 이 서버의 번호와 백업 서버의 번호는 변경되지 않습니다. 서비스의 이동과 서버의 교체는 매우 빠른 과정이며, 그 동안 새로운 종료가 발생할 수 없습니다.

회사는 시스템 성능 테스트를 실시할 계획입니다. 이를 위해 최대 $k$개의 서버가 종료될 것입니다. 종료는 순차적으로 수행되며, 즉 두 서버가 동시에 종료되지는 않습니다. 최대 $k$개의 서버를 종료한 후 하나의 서버에 모일 수 있는 서비스의 최대 개수를 구하십시오.

입력

첫 번째 줄에는 두 정수 $n$과 $k$ ($1 \leqslant k < n \leqslant 10^5$)가 주어집니다. 이는 서버의 개수와 종료할 수 있는 서버의 최대 개수입니다.

두 번째 줄에는 $n$개의 정수 $a_1, a_2, \dots, a_n$ ($0 \leqslant a_i \leqslant 10^9$)이 주어집니다. 이는 서버에서 실행 중인 서비스의 개수입니다.

세 번째 줄에는 $n$개의 정수 $p_1, p_2, \dots, p_n$ ($1 \leqslant p_i \leqslant n$)이 주어집니다. 이는 백업 서버의 번호입니다.

출력

하나의 정수, 즉 문제의 답을 출력합니다.

서브태스크

서브태스크 배점 제약 조건 필요 서브태스크
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

먼저 두 번째 서버가 종료됩니다. 그 서비스는 세 번째 서버로 이동하므로, 이제 세 번째 서버에는 $10 + 7 = 17$개의 서비스가 있습니다.

두 번째로 세 번째 서버가 종료됩니다. 그 서비스는 네 번째 서버로 이동하며, 이후 네 번째 서버에는 $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

만약 세 번째 서버가 먼저 종료되고 두 번째 서버가 두 번째로 종료되었다면, 과정은 다음과 같습니다:

단계 $a_1$ $a_2$ $a_3$ $a_4$
첫 번째 종료 전 6 10 7 9
서버 3 종료 후 6 10 0 16
서버 2 종료 후 6 0 10 16

이 경우 한 서버의 최대 서비스 개수는 16이므로, 최적의 답이 아닙니다.

두 번째 예제에서 가능한 옵션 중 하나는 서버를 종료하지 않는 것입니다. 그러면 첫 번째 서버에 $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.