本文主要是介绍hihocoder1051(枚举贪心),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:点击打开链接
解题思路:
明显要消除连续的m才能使收益最大,我们直接暴力的枚举好了,每个区间的a[i + m ] - a[ i - 1] - 1的最大值即所求。这里在左右边界分别添上0和100
完整代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <climits>
using namespace std;
int n , m;
const int maxn = 100001;
const int INF = 1000000000;
int a[maxn];
void solve()
{int maxx = -INF;for(int i = 1 ; i <= n ; i ++){if(i + m > n) break;int sum = a[i + m] - a[i - 1] - 1;if(sum > maxx)maxx = sum;}cout << maxx << endl;
}int main()
{#ifdef DoubleQfreopen("in.txt" , "r" , stdin);#endif // DoubleQint T;cin >> T;while(T--){cin >> n >> m;for(int i = 1 ; i <= n ; i ++)cin >> a[i];if(m >= n){cout << "100" << endl;continue;}a[0] = 0;a[n+1] = 100;n ++;solve();}
}
这篇关于hihocoder1051(枚举贪心)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!