官方题解
2025-12-29 11:33:13
发布于:浙江
26阅读
0回复
0点赞
题目大意
个人,每个人身高已知,有 次询问,找出身高大于等于 的人数。
解题思路
对于每次查询,如果都遍历所有人的身高的话,时间复杂度为 ,无法通过。
容易发现对所有人的身高进行排序,那么大于等于 的身高就会出现在一段后缀当中,因此容易想到使用二分查找能够快速找出分解点。
时间复杂度 。
参考代码
#include <bits/stdc++.h>
using namespace std;
const int N = 200010;
int h[N];
int main(){
int n,q;cin>>n>>q;
for(int i=1;i<=n;i++) cin>>h[i];
sort(h+1,h+n+1);
while(q--){
int x;cin>>x;
int pos=lower_bound(h+1,h+n+1,x)-h;
cout<<n-pos+1<<endl;
}
return 0;
}
这里空空如也






有帮助,赞一个