简单版和困难版的区别仅在于简单版对于数组 xxx、yyy 和 zzz 有额外约束,在简单版中所有的 xi=1x_i=1xi=1,所有的 yi=zi=0y_i=z_i=0yi=zi=0。
有一个长度为 nnn 的数组 aaa 和三个长度为 nnn 的数组 x,y,zx,y,zx,y,z,aaa 中的所有数字都是 111 到 nnn 的正整数。同时,还有一个长度为 m(m≤n)m(m\le n)m(m≤n) 的数组 bbb,初始时数组 bbb 中的所有元素都是 000。你的初始得分 scorescorescore 为 000。
你需要从左到右遍历数组 aaa,并且在你遍历到第 iii 个数字 aia_iai 时:
在遍历完所有数字后,你的得分 scorescorescore 的最大值是多少?
第一行,一个整数 t(1≤t≤100)t(1\le t\le 100)t(1≤t≤100),代表数据组数。
对于每组数据:
第一行,两个整数 n,m(1≤m≤n≤800)n,m(1\le m\le n\le 800)n,m(1≤m≤n≤800),分别代表数组 aaa 的长度和数组 bbb 的长度。
第二行,nnn 个整数 a1,…,an(1≤ai≤n)a_1,\dots,a_n(1\le a_i\le n)a1,…,an(1≤ai≤n),代表数组 aaa。
第三行,nnn 个整数 x1,…,xn(xi=1)x_1,\dots,x_n(x_i=1)x1,…,xn(xi=1),代表数组 xxx。
第四行,nnn 个整数 y1,…,yn(yi=0)y_1,\dots,y_n(y_i=0)y1,…,yn(yi=0),代表数组 yyy。
第五行,nnn 个整数 z1,…,zn(zi=0)z_1,\dots,z_n(z_i=0)z1,…,zn(zi=0),代表数组 zzz。
保证同一测试点内 nnn 的总和不超过 800800800。
对于每组数据,输出一个整数 scorescorescore,代表在最优替换方案下你的得分的最大值。
输入样例
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