#556. LRU is Best? (Easy Version)

传统 1000 ms 1024 MiB
标准 IO
文本比较 dd 标签

题目描述

简单版和困难版的区别仅在于简单版对于数组 xxyyzz 有额外约束,在简单版中所有的 xi=1x_i=1,所有的 yi=zi=0y_i=z_i=0

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

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

  • 假如数字 aia_i 在数组 bb 中,你的得分 scorescore 增加 xix_i
  • 否则,你的得分 scorescore 扣除 yiy_i。接下来,你可以选择一个位置 j(1jm)j(1\le j\le m),将数组 bb 中第 jj 个数字 bjb_j 替换为 aia_i 并且使你的得分扣除 ziz_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(xi=1)x_1,\dots,x_n(x_i=1),代表数组 xx

第四行,nn 个整数 y1,,yn(yi=0)y_1,\dots,y_n(y_i=0),代表数组 yy

第五行,nn 个整数 z1,,zn(zi=0)z_1,\dots,z_n(z_i=0),代表数组 zz

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

输出格式

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

样例

输入样例

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