题目描述
甜美镜头 竟也落花一样飘落下来
从此 我的生命 变成了尘埃
寂寞的人 总是习惯寂寞的安稳
至少 我们直线 曾经交叉过
enterdawn现在站在高度为xm的烈日骄阳大桥上,顿时,enterdawn的视线,失去了色彩。
我们知道enterdawn一样不善于表白,所以他想要接住那一个个的甜美镜头,来帮助他的视线恢复色彩。
只要enterdawn的视线和逐渐落下的甜美镜头交叉,他就能接住落下的甜美镜头,但是,由于enterdawn沉浸在回忆中,所以他不想向下看,只能平视和仰视。甜美镜头的下落速度为1m/s,enterdawn每秒只能接住一个甜美镜头。
请输出enterdawn能接住最多甜美镜头的数量。
本题为多组测试样例。
输入描述:
第一行为一个整数t(1≤t≤1000),表示样例的组数。 接下来的每组数据, 第一行为两个整数x,n(0<x,n≤1⋅10^5),分别表示enterdawn的高度和镜头的数量。 第二行为n个整数,表示0时刻所有镜头的高度(1≤h≤1∗10^5)。 所有样例的n的总和不超过5⋅10^3。
输出描述:
输出一个整数,表示enterdawn接住最多甜美镜头的数量。
示例1
输入
1 5 5 9 8 8 5 5
输出
4
说明
镜头下落的方式“瞬移”,即0-1s不动,在1s向下瞬移1m,所以enterdawn能接住一个高度5m的镜头。 对于题给样例: 在0-1秒时,镜头高度分别为9 8 8 5 5,enterdawn接住了一片高度在5m的镜头。 在1-2秒时,镜头高度分别为8 7 7,enterdawn接住了一片高度在7m的镜头。 在2-3秒时,镜头高度分别为7 6,enterdawn接住了一片高度在6m的镜头。 在3-4秒时,镜头高度分别为6,enterdawn接住了一片高度在6m的镜头。 总计接住4个镜头。
这道题目也适合用双指针+sort排序来做
以下为本人题解:
#include<bits/stdc++.h>
using namespace std;const int N=10;
int n,op,t;int main()
{
cin >> t;
while(t--)
{
int x,cnt=0,cnt1=0;
int a[5005],b[5005];
cin >>x >> n;
for(int i=0;i<n;i++)
{
cin >> a[i];
}
sort(a,a+n);
int j=0;
for(int i=0;i<n;i++)
{
if(a[i]-j>=x)
cnt++,j++;
}
cout<<j<<endl;
}
return 0;
}