测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A38317. 苹果消消乐有 1 00 个苹果和香蕉排成一条直线, 其中有 N 个香蕉, 你可以使用至多 M 次魔法道具将香蕉变成苹果, 最后“最长的连续苹果数量”即为你本次苹果消消乐的得分, 给定苹果和香蕉的排列, 求你能获得的最大得分。输入第一行是一个整数 T(1 <= T <= 1 0), 代表测试数据的组数。 每个测试数据第一行是 2 个整数 N 和 M(0<= N, M <= 1 00)。 第二行包含…

填空题 中等

题目描述

苹果消消乐

有 1 00 个苹果和香蕉排成一条直线, 其中有 N 个香蕉, 你可以使用至多 M 次魔法道具将香蕉变成苹

果, 最后“最长的连续苹果数量”即为你本次苹果消消乐的得分, 给定苹果和香蕉的排列, 求你能获得的

最大得分。

输入

第一行是一个整数 T(1 <= T <= 1 0), 代表测试数据的组数。 每个测试数据第一行是 2 个整数 N 和 M(0

<= N, M <= 1 00)。 第二行包含 N 个整数 a1 , a2, ... aN(1 <= a1 < a2 < ... < aN <= 1 00), 表示第 a1 , a2, ...

aN 个位置上摆放的是香蕉。

输出

对于每组数据, 输出通过使用魔法道具后你能获得的最大得分。

样例输入

3

5 1

34 77 82 83 84

5 2

10 30 55 56 90

5 10

10 30 55 56 90

样例输出

76

59

100

提示

这是个枚举题

参考答案

#include <bits/stdc++.h> using namespace std; int main() { int t;//存一共有多少组数据 cin>>t; while(t--) { int n,m,line=100,ans;//不知道的看题目,line是长度,ans是答案 cin>>n>>m; int mp[n+1];//数组往大开,养成好习惯 for(int i=1;i<=n;i++) cin>>mp[i]; if(m>=n) { cout<<"100"<<endl; continue; } mp[0]=0; mp[n+1]=line+1; int r=m; line=1;//长度变成1 while(r<=n)//控制m<=n { ans=max(ans,mp[r+1]-mp[line-1]+1-2);//因为要找最大的,所以用Max函数 line++; r++; } cout<<ans<<endl; } return 0; }
上一题 下一题