题解:开始以为是DP, 感觉特麻烦, 过程也蛮复杂的。其实可以这样想:给你n个数,可以移去其中连续的m个数, 求剩下数之间的最大差 - 1;
#include <iostream>
#include <cstdio>#include <cstring>
#include <map>
#include <algorithm>
#include <sstream>
#include <cctype>
#include <set>
#include <string>
#include <stack>
#include <vector>
using namespace std;
const int N = 105;
const int inf = 0x3f3f3f3f;
int main()
{
int t, n, m;
int a[N];
scanf("%d", &t);
while(t--)
{
scanf("%d %d", &n ,&m);
a[0] = 0;
for(int i = 1 ; i<=n; i++)
{
scanf("%d", &a[i]);
}
a[n+1] = 101;
int Maxlen = 0;
if(m>=n)
Maxlen = 100;
else
{
for(int i = 0; i <= n - m ; i++)
{
if(a[i+m+1]-a[i]-1>Maxlen)
Maxlen = a[i+m+1] - a[i]-1;
}
}
printf("%d\n", Maxlen);
}
return 0;
}