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(枚举贪心)

相关文章:

你感兴趣的文章:

标签云: