1759: 多少个元素比它大 二分
来源:互联网 发布:中世纪2优化9大百科 编辑:程序博客网 时间:2024/06/08 11:49
1759: 多少个元素比它大
时间限制: 1 Sec 内存限制: 128 MB提交: 6 解决: 2
[提交][状态][讨论版] [Edit]
题目描述
给你n个元素和m次查询,对每次查询给定一个整数x,我想知道这n个数里面有多少个数不比它小。
输入
有t组测试数据,每组数据给定两个整数n和m,下面一行有n个元素。接下来有m次查询,每次查询给定一个整数x。(1 <= n, m <= 20000,1 <= 元素 <= 10^8,1 <= x <= 10^8)。
输出
对每次查询,输出一个结果,占一行。
样例输入
1
10 5
3 4 10 99 3 7 4 2 2 2
1
5
3
10
100
样例输出
10
3
7
2
0
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int a[110000],i,j,k,l,m,n,ans,sum,help,cnt,cmt,p,mid;int cmp(int a,int b){return a>b;}int main(){scanf("%d",&p);while(p--){scanf("%d%d",&n,&m);for(i=0;i<n;i++)scanf("%d",&a[i]);sort(a,a+n);for(int nn=0;nn<m;nn++){scanf("%d",&k);if(k<=a[0]){printf("%d\n",n);continue;}if(k>a[n-1]){printf("0\n");continue;}int start=0;int end=n-1;while(start!=end){mid=(start+end+1)/2;if(a[mid]>k)end=mid;else if(a[mid]<k)start=mid;if(a[mid]==k)break;if(a[start]<k&&a[end]>k&&end-start==1){mid=end;break;}}if(a[mid]==k)for(i=mid;i>=0;i--){if(a[i]!=k){mid=i+1;break;}}printf("%d\n",n-mid);}}}
0 0
- 1759: 多少个元素比它大 二分
- 左边最近的比它大的元素
- 找出数组中有元素比它的邻居大的元素下标
- 二分查找第一个比k大的数
- 多少个元素
- 多少个元素
- 【HDU 3887】【dfs序+线段树】Counting Offspring 【查询子树上标号比它小的点有多少个 】
- 给定一个数,求比它大的第一个对称数
- 找出数组中每个数的右边第一个比它大的数
- 【二分查找】查找数组中第一个比k大的数的下标
- 【二分查找】查找数组中第一个比k大的数的下标
- 给定一整型数组,若数组中某个下标值大的元素值小于某个下标值比它小的元素值,称这是一个反序。
- 给定一整型数组,若数组中某个下标值大的元素值小于某个下标值比它小的元素值,称这是一个反序
- 统计序列中当前元素之前比它大的元素个数(两种解法:归并排序应用,线段树)
- 输出每个元素,在它左侧且比它小的最近元素
- 百度面试题:输出每个元素,在它左侧且比它小的最近元素
- 每日一题(61) - 找出左边比它小,右边比它大的数
- 求出比平均数大的元素
- 使用两个堆栈实现队列功能
- AOP
- 数字(两位小数)转人民币大写
- python中多线程如何用Ctrl+C终止
- 微信企业号申请详细流程
- 1759: 多少个元素比它大 二分
- 请多关照
- 一些特别有趣的C++面试题(持续更新中)
- 第5周项目1 三角形2
- ListView 和 ExpandableListView在ScrollView中不能显示的解决办法
- 面试准备android(三)
- DFS-素数环
- JAR还原
- AVI文件的读取并显示