Codeforces Round 708 (Div. 2) |
---|
Закончено |
Обратите внимание на нестандартное ограничение по памяти.
Есть $$$n$$$ задач, пронумерованных целыми числами от $$$1$$$ до $$$n$$$. У $$$i$$$-й задачи есть сложность $$$c_i = 2^i$$$, тэг $$$tag_i$$$ и счёт $$$s_i$$$.
После задачи с номером $$$i$$$ можно решить задачу с номером $$$j$$$ только в том случае, если $$$\text{IQ} < |c_i - c_j|$$$ и $$$tag_i \neq tag_j$$$. После этого $$$\text{IQ}$$$ меняется и становится равным $$$\text{IQ} = |c_i - c_j|$$$ и вы набираете $$$|s_i - s_j|$$$ очков.
Первой можно решить любую задачу. Задачи можно решать в любом порядке, каждую сколько угодно раз.
Изначально $$$\text{IQ} = 0$$$. Найдите максимальное количество очков, которое можно набрать.
В первой строке находится единственное целое число $$$t$$$ $$$(1 \le t \le 100)$$$ — количество наборов входных данных.
В первой строке описания каждого набора входных данных находится единственное целое число $$$n$$$ $$$(1 \le n \le 5000)$$$ — количество задач.
Во второй строке описания каждого набора входных данных находится $$$n$$$ целых чисел $$$tag_1, tag_2, \ldots, tag_n$$$ $$$(1 \le tag_i \le n)$$$ — тэги задач.
В третьей строке описания каждого набора входных данных находятся $$$n$$$ целых чисел $$$s_1, s_2, \ldots, s_n$$$ $$$(1 \le s_i \le 10^9)$$$ — счёт задач.
Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превосходит $$$5000$$$.
Для каждого набора входных данных выведите одно число — максимальное количество очков, которое можно набрать.
5 4 1 2 3 4 5 10 15 20 4 1 2 1 2 5 10 15 20 4 2 2 4 1 2 8 19 1 2 1 1 6 9 1 1 666
35 30 42 0 0
В первом наборе входных данных оптимальная последовательность решения задач такая:
Во втором наборе входных данных оптимальная последовательность решения задач такая:
В третьем наборе входных данных оптимальная последовательность решения задач такая:
Название |
---|