#P5712. D++游戏
D++游戏
Problem Description
众所周知,度度熊喜欢的字符只有两个:B 和D。
今天,它发明了一个游戏:D游戏。
度度熊的英文并不是很高明,所以这里的D,没什么高深的含义,只是代指等差数列[(等差数列百科)](http://baike.baidu.com/view/62268.htm)中的公差D。
这个游戏是这样的,首先度度熊拥有一个公差集合$\{D\}$,然后它依次写下$N$个数字排成一行。游戏规则很简单:
1.在当前剩下的有序数组中选择$X (X \geq 2)$ 个连续数字;
2.检查1 选择的$X$个数字是否构成等差数列,且公差 $d\in \{D\}$;
3.如果2满足,可以在数组中删除这$X$个数字;
4.重复 $1 - 3$ 步,直到无法删除更多数字。
度度熊最多能删掉多少个数字,如果它足够聪明的话?
为了挑战自己,度度熊给D游戏多设了一个条件,$X_{min}$和$X_{max}$,在游戏的第一步,选出$X$个连续数字时,必须满足$X_{min} \leq X \leq X_{max}$。它称这个游戏为D++游戏。
同时精益求精的度度熊还希望知道删掉最多数字的最少步数。
Input
第一行为$T$,表示输入数据组数。
每组数据以四个整数 $N$,$M$,$X_{min}$,$X_{max}$ 开始 。接着的一行包括 $N$ 个整数,表示排成一行的有序数组 $A_{i}$。接下来的一行是 $M$ 个整数,即给定的公差集合 $D_{i}$。
$1\leq T\leq 100$
$1 \leq N, M \leq 32$
$2 \leq X_{min} \leq X_{max} \leq 16$
$-1\ 000\ 000\ 000 \leq A_{i}, D_{i} \leq 1\ 000\ 000\ 000$
Output
对第$i$组数据,输出
Case #i:
然后输出一行,为最多能删掉的数字和完成这个目标的最小步数,用空格隔开。
3
3 1 2 2
1 2 3
1
3 1 2 3
1 2 3
1
4 2 2 4
1 3 4 3
1 2
Case #1:
2 1
Case #2:
3 1
Case #3:
4 2