#LX0059. 【区间DP】等差数列

【区间DP】等差数列

题目描述

众所周知,度度熊喜欢的字符只有两个:B 和D。

今天,它发明了一个游戏:D游戏。

度度熊的英文并不是很高明,所以这里的D,没什么高深的含义,只是代指等差数列(等差数列百科)中的公差D。

这个游戏是这样的,首先度度熊拥有一个公差集合DD,然后它依次写下NN个数字排成一行。游戏规则很简单:

  1. 在当前剩下的有序数组中选择X(X2)X(X≥2) 个连续数字;

  2. 检查1选择的XX个数字是否构成等差数列,且公差 dDd∈D

  3. 如果2满足,可以在数组中删除这XX个数字;

  4. 重复 1−3 步,直到无法删除更多数字。

度度熊最多能删掉多少个数字,如果它足够聪明的话?

输入格式

第一行输入TT,表示测试数据组数。

每组数组开头是N,MN,M

下一行NN个整数aia_i,表示数组中的NN个数字。

接下来一行MM个整数,表示公差集合DD中的元素。

$T\leq 10,1\leq N,M\leq 300,-10^9\leq a_i,D_i \leq 10^9$。

输出格式

对于每组数据,输出一个数字表示答案。

样例输入1

3
3 1 
1 2 3 
1
3 2
1 2 4
1 2 
4 2 
1 3 4 3 
1 2

样例输出1

3
2
4

样例解释

没有解释就是最好的解释。