常用函数分析

绝对值函数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;
}
  
posted @ 2024-01-05 16:28  毛竹259  阅读(58)  评论(0编辑  收藏  举报