#1051 补提交卡

来源:互联网 发布:公安局网络诈骗案 编辑:程序博客网 时间:2024/05/23 18:57

题解:开始以为是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;
}

0 0
原创粉丝点击