seuOJ557 - LRU is Best? (Hard Version)

题目描述

简单版和困难版的区别仅在于简单版对于数组 xxyyzz 有额外约束,在困难版中对于三个数组中的值没有额外约束。

有一个长度为 nn 的数组 aa 和三个长度为 nn 的数组 x,y,zx,y,zaa 中的所有数字都是 11nn 的正整数。同时,还有一个长度为 m(mn)m(m\le n) 的数组 bb,初始时数组 bb 中的所有元素都是 00。你的初始得分 scorescore00

你需要从左到右遍历数组 aa,并且在你遍历到第 ii 个数字 aia_i 时:

在遍历完所有数字后,你的得分 scorescore 的最大值是多少?

输入格式

第一行,一个整数 t(1t100)t(1\le t\le 100),代表数据组数。

对于每组数据:

第一行,两个整数 n,m(1mn800)n,m(1\le m\le n\le 800),分别代表数组 aa 的长度和数组 bb 的长度。

第二行,nn 个整数 a1,,an(1ain)a_1,\dots,a_n(1\le a_i\le n),代表数组 aa

第三行,nn 个整数 x1,,xn(1xi109)x_1,\dots,x_n(1\le x_i\le 10^9),代表数组 xx

第四行,nn 个整数 y1,,yn(0yi109)y_1,\dots,y_n(0\le y_i\le 10^9),代表数组 yy

第五行,nn 个整数 z1,,zn(0zi109)z_1,\dots,z_n(0\le z_i\le 10^9),代表数组 zz

保证同一测试点内 nn 的总和不超过 800800

输出格式

对于每组数据,输出一个整数 scorescore,代表在最优替换方案下你的得分的最大值。

样例

输入样例

14
2 2
1 2
1 1
0 0
0 0
5 2
1 2 2 2 1
1 1 1 1 1
0 0 0 0 0
0 0 0 0 0
6 2
1 2 3 4 5 1
1 1 1 1 1 1
0 0 0 0 0 0
0 0 0 0 0 0
10 3
1 2 3 2 1 4 1 2 4 3
1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
10 5
1 6 1 5 5 9 7 7 8 8
1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
10 2
3 7 1 6 3 10 4 3 1 2
1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
10 1
1 2 1 2 1 2 1 2 1 1
1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
2 2
1 2
9 9
1 2
8 1
5 2
1 2 2 2 1
8 2 4 5 9
6 8 3 1 8
5 5 3 2 6
6 2
1 2 3 4 5 1
3 2 8 4 9 5
3 0 2 1 9 8
1 2 9 0 8 3
10 3
1 2 3 2 1 4 1 2 4 3
5 9 8 1 5 7 9 8 7 1
5 5 6 1 2 8 7 2 1 0
9 0 0 0 2 7 9 6 9 6
10 5
1 6 1 5 5 9 7 7 8 8
10 14 14 16 8 7 17 2 6 5
6 1 7 9 9 0 5 9 0 2
4 4 6 5 6 4 3 8 0 8
10 2
3 7 1 6 3 10 4 3 1 2
9 2 1 4 3 6 7 1 1 8
0 0 0 0 0 0 0 0 0 0
3 7 4 2 2 0 1 4 7 3
10 1
1 2 1 2 1 2 1 2 1 1
1 1 1 1 1 1 1 1 1 1
0 1 0 1 0 1 0 1 0 0
1 0 0 0 0 0 0 0 0 0

输出样例

0
3
1
5
4
3
5
-3
-6
-11
-10
-4
1
3