#P17018. [ROI 2026 Day1] 分布式系统

    ID: 19308 远端评测题 1000ms 1024MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>图论2026双指针 two-pointerROI(俄罗斯)

[ROI 2026 Day1] 分布式系统

题目描述

某公司有 nn 台服务器,编号为 11nn。第 ii 台服务器上运行着 aia_i 个服务。

服务器可能会发生故障,因此为每台服务器指定了一台备用服务器。编号为 ii 的服务器的备用服务器编号为 pip_i。若 pi=ip_i = i,则该服务器为高可靠性服务器,永远不会发生故障。

对于任意两台不同的服务器 iijj,它们的备用服务器编号 pip_ipjp_j 互不相同。因此,pp 是一个长度为 nn 的排列,即 11nn 的每个数在 p1,,pnp_1, \ldots, p_n 中恰好出现一次。

服务器故障的处理过程如下:若服务器 ii 发生故障,则其上运行的全部服务将转移到编号为 pip_i 的服务器上,而服务器 ii 会被替换为一台全新的服务器,其上不运行任何服务。该服务器的编号及其备用服务器编号保持不变。服务的转移以及服务器的替换过程极快,在此期间不会发生新的故障。

公司计划对系统的运行能力进行一次测试。为此,将令不超过 kk 台服务器发生故障。故障是依次发生的,即不会有两台服务器同时故障。请计算:在至多发生 kk 次故障后,单台服务器上可能出现的最大服务数量。

输入格式

第一行包含两个整数 nnkk (1k<n1051 \le k < n \le 10^5),分别表示服务器总数以及最多可能发生故障的服务器数量。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n (0ai1090 \le a_i \le 10^9),表示初始时各服务器上运行的服务数量。

第三行包含 nn 个整数 p1,p2,,pnp_1, p_2, \ldots, p_n (1pin1 \le p_i \le n),表示各服务器的备用服务器编号。

输出格式

输出一个整数,表示答案。

4 2
6 10 7 9
2 3 4 1
26
3 1
1000000000 993 2010
1 3 2
1000000000
11 5
3 5 12 7 5 9 2 6 0 9 4
2 8 9 6 5 11 3 1 10 7 4
23

提示

说明

考虑第一个样例中能够达到最大答案的故障顺序。

下表展示了各服务器的备用关系:

服务器 1 2 3 4
备用 2 3 4 1

首先令服务器 2 故障,其上的服务转移到服务器 3,此时服务器 3 上共有 10+7=1710 + 7 = 17 个服务。

随后令服务器 3 故障,其上的服务转移到服务器 4,此时服务器 4 上共有 9+17=269 + 17 = 26 个服务。

为了便于理解,请参考下表,其中记录了上述过程中每台服务器上的服务数量。

阶段 a1a_1 a2a_2 a3a_3 a4a_4
第一次故障前 6 10 7 9
服务器 2 故障后 0 17
服务器 3 故障后 0 26

如果首先令服务器 3 故障,再令服务器 2 故障,过程将如下所示:

阶段 a1a_1 a2a_2 a3a_3 a4a_4
第一次故障前 6 10 7 9
服务器 3 故障后 0 16
服务器 2 故障后 0 10

此时单台服务器上的最大服务数量为 16,并非最优答案。

在第二个样例中,一种可能的方案是任何服务器都不发生故障。此时服务器 1 上拥有 10000000001\,000\,000\,000 个服务,即为答案。若令服务器 2 或服务器 3 故障,最大服务数量仍出现在服务器 1 上。

子任务

子任务 分数 nn 额外限制 依赖子任务
1 15 n1000n \le 1000 k=1k = 1 --
2 27 -- 1
3 21 -- pi=imodn+1p_i = i \bmod n + 1 --
4 37 -- 1, 2, 3

翻译由 DeepSeek V4 Pro 完成