Это сложная версия задачи. Единственное различие между версиями заключается в ограничениях на $$$t$$$, $$$n$$$, $$$k$$$.
У вас есть компьютер с двумя CPU. Также есть $$$k$$$ программ, пронумерованных целыми числами от $$$1$$$ до $$$k$$$, которые вы можете исполнять на компьютере, каждую только на одном CPU.
$$$i$$$-я программа ($$$1 \le i \le k$$$) занимает $$$cold_i$$$ секунд, чтобы быть исполненной на любом CPU. Однако, если последняя программа, которая исполнялась на этом CPU была также программа $$$i$$$, исполнение занимает $$$hot_i$$$ секунд ($$$hot_i \le cold_i$$$). Обратите внимание, что это выполняется, только если мы исполнили программу $$$i$$$ несколько раз последовательно на этом CPU — если мы исполняем программу $$$i$$$, потому другую программу, потом программу $$$i$$$, время исполнения программы во второй раз займет $$$cold_i$$$ секунд.
Вам дана последовательность $$$a_1, a_2, \ldots, a_n$$$ длины $$$n$$$, состоящая из целых чисел от $$$1$$$ до $$$k$$$. Вам нужно исполнить на компьютере программы $$$a_1, a_2, \ldots, a_n$$$ в этом порядке. Для всех $$$2 \le i \le n$$$, вы не можете начать исполнять программу $$$a_i$$$, пока программа $$$a_{i - 1}$$$ не завершилась.
Найдите минимальное количество времени нужное, чтобы исполнить все программы $$$a_1, a_2, \ldots, a_n$$$ в таком порядке.
В первой строке находится единственное целое число $$$t$$$ ($$$1 \le t \le 10^5$$$) — количество наборов входных данных. Описания наборов входных данных следуют.
В первой строке описания каждого набора входных данных находится два целых числа $$$n$$$, $$$k$$$ ($$$1 \le n, k \le 3 \cdot 10^5$$$).
Во второй строке описания каждого набора входных данных находится $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$1 \le a_i \le k$$$).
В третьей строке каждого набора входных данных находится $$$k$$$ целых чисел $$$cold_1, cold_2, \ldots, cold_k$$$ ($$$1 \le cold_i \le 10^9$$$).
В четвертой строке каждого набора входных данных находится $$$k$$$ целых чисел $$$hot_1, hot_2, \ldots, hot_k$$$ ($$$1 \le hot_i \le cold_i$$$).
Гарантируется, что сумма $$$n$$$ и сумма $$$k$$$ по всем наборам входных данных не превосходит $$$3 \cdot 10^5$$$.
Для каждого набора входных данных выведите минимальное время, необходимое чтобы исполнить все программы в данном порядке.
93 21 2 23 22 14 21 2 1 25 32 14 31 2 3 1100 100 1001 1 15 22 1 2 1 165 4554 75 31 3 2 1 22 2 21 1 15 11 1 1 1 110000000009999999995 61 6 1 4 13 6 4 1 4 51 1 1 1 4 11 334 5 61 2 38 33 3 3 1 2 3 2 110 10 810 10 5
6 11 301 225 8 4999999996 11 6 63
В первом наборе входных данных мы можем сделать следующее:
Суммарно нам потребуется $$$3 + 2 + 1 = 6$$$ секунд, чтобы исполнить все программы. Можно показать, что это оптимальное время.
Во втором наборе входных данных мы можем сделать следующее:
Суммарно нам потребуется $$$5 + 3 + 2 + 1 = 11$$$ секунд, чтобы исполнить все программы. Можно показать, что это оптимальное время.
Название |
---|