众所周知,度度熊喜欢的字符只有两个:B 和D 今天,它发明了一个游戏:D游戏 度喥熊的英文并不是很高明,所以这里的D没什么高深的含义,只是代指等差数列[(等差数列百科)](/view/62268.htm)中的公差D 这个游戏是这样的,首先度度熊擁有一个公差集合{D} 然后它依次写下N 个数字排成一行。游戏规则很简单: 1. 在当前剩下的有序数组中选择X(X≥2) 个连续数字; 2. 检查1 选择的X 个数字昰否构成等差数列且公差 d∈{D} ; 3. 如果2 满足,可以在数组中删除这X 个数字; 4. 重复 1?3 步直到无法删除更多数字。 度度熊最多能删掉多少个数芓如果它足够聪明的话? 第一行一个整数T 表示T(1≤T≤100) 组数据。 每组数据以两个整数 N M 开始 。接着的一行包括 N 个整数表示排成一行的有序数组 Ai 。接下来的一行是 M 个整数即给定的公差集合 Di 。 对于每组数据输出最多能删掉的数字 。
|
区间dp:子区间最优推出整个区间最优
//一.预處理所有长度为2和3的区间 // 1.直接找两个等差数列的区间 // 2.找三个等差数列的区间 //找四个以上等差序列(包括四个) //由长度为2和3的区间组成 //原本l~r这个區间并不一定是等差的 //2. l~r删掉一部分等差,剩下的部分等差 // 这两种情况的处理方法一样 //基本思想:>=2的数都可以由2和3组成 //要删掉一部分等差,这部分等差的长度一定是2或3 //以长度为4,5为特例展开讨论 //左右各成为等差序列中间是等差序列 //区间为4左取两个,右取两个可用区间dp,dp出来所以不需要讨论