常用函数分析
绝对值函数abs
折叠代码块
包含头文件 或 或
库函数定义
int abs( int num );
float abs( float num );
double abs( double num );
long double abs( long double num );
long long abs( long long num );
总之:abs函数可用于int,float,double,long double,long long
lower_bound函数
在升序排列的a数组内二分查找[l,r)区间内的值为m的元素。返回m在数组中的下标
1.如果m在区间中没有出现过,那么返回第一个比m大的数的下标。
2.如果m比所有区间内的数都大,那么返回r。这个时候会越界,小心。
3.如果区间内有多个相同的m,返回第一个m的下标。
4.时间复杂度:一次查询O(log n),n为数组长度。
注意:m可以是pair等等。还有下标从0开始还是从1开始。
折叠代码块
#include
using namespace std;
//
const int maxn = 1e6 + 10;
//
int n = 0, x = 0;
int a[maxn] = {};
//
int main()
{
scanf("%d", &n);
for(int i=1; i<=n; i++) scanf("%d", &a[i]);
scanf("%d", &x);
//
int ans = lower_bound(a+1, a+1+n, x) - a;
if(ans>n || a[ans]!=x) ans = -1;
printf("%d", ans);
//
return 0;
}