简单版和困难版的区别仅在于简单版对于数组 x、y 和 z 有额外约束,在简单版中所有的 xi=1,所有的 yi=zi=0。
有一个长度为 n 的数组 a 和三个长度为 n 的数组 x,y,z,a 中的所有数字都是 1 到 n 的正整数。同时,还有一个长度为 m(m≤n) 的数组 b,初始时数组 b 中的所有元素都是 0。你的初始得分 score 为 0。
你需要从左到右遍历数组 a,并且在你遍历到第 i 个数字 ai 时:
在遍历完所有数字后,你的得分 score 的最大值是多少?
第一行,一个整数 t(1≤t≤100),代表数据组数。
对于每组数据:
第一行,两个整数 n,m(1≤m≤n≤800),分别代表数组 a 的长度和数组 b 的长度。
第二行,n 个整数 a1,…,an(1≤ai≤n),代表数组 a。
第三行,n 个整数 x1,…,xn(xi=1),代表数组 x。
第四行,n 个整数 y1,…,yn(yi=0),代表数组 y。
第五行,n 个整数 z1,…,zn(zi=0),代表数组 z。
保证同一测试点内 n 的总和不超过 800。
对于每组数据,输出一个整数 score,代表在最优替换方案下你的得分的最大值。
输入样例
7
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
输出样例
0
3
1
5
4
3
5