都是二分函数,头文件<algorithm>
upper_bound返回第一个大于的元素的下标;
lower_bound返回第一个大于等于元素的下标;
#include <iostream>
#include <algorithm>//必须包含的头文件
using namespace std;
int main()
{
int point[10] = {1,3,7,7,9};
int tmp = upper_bound(point, point+5, 7) - point;//按从小到大,7最多能插入数组point的哪个位置
tmp = lower_bound(point, point+5, 7) - point;////按从小到大,7最少能插入数组point的哪个位置
printf("%d\n",tmp);
return 0;
}题目大意不同楼层不同房间数。进行查找。
C - Letters
CodeForces - 978C
#include<bits/stdc++.h>
using namespace std;
long long int a[200010];
int main()
{
long long n,m,t,pos;
cin>>n>>m;
a[0]=0;
for(int i=1; i<=n; i++)
{
cin>>t;
a[i]=a[i-1]+t;
}
while(m--)
{
cin>>t;
pos=lower_bound(a+1,a+1+n,t)-a-1;
cout<<pos+1<<" "<<t-a[pos]<<endl;
}
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
本文介绍了C++标准库中upper_bound和lower_bound函数的应用,并通过示例代码展示了如何使用这两个函数来解决问题,例如确定元素在有序数组中的插入位置及解决楼层房间数的查找问题。
1915

被折叠的 条评论
为什么被折叠?



