ACM代码小技巧总结

1、在循环里(for循环)建议不要直接用i < strlen(str),最好用int len =strlen( str );i < len;这样可以节省时间,也许这点时间就会使代码不会超时(遇到过,一直接使用的就TLE的)。

2、lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。

在从小到大的排序数组中,

lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

upper_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

3、STL之min_element()与max_element()(取容器中的最大最小值)
min_element()和max_element

头文件:#include< algorithm>

作用:返回容器中最小值和最大值。max_element(first,end,cmp);其中cmp为可选择参数。

#include<iostream>
#include<algorithm>
using namespace std;

bool cmp(int a,int b)
{
    return a<b;
}
int main()
{
    int num[]={2,3,1,6,4,5};
    cout<<"最小值是 "<<*min_element(num,num+6)<<endl;
    cout<<"最大值是 "<<*max_element(num,num+6)<<endl;
    cout<<"最小值是 "<<*min_element(num,num+6,cmp)<<endl;
    cout<<"最大值是 "<<*max_element(num,num+6,cmp)<<endl;
    return 0; 
}
//最小值是 1
//最大值是 6
//最小值是 1
//最大值是 6

猜你喜欢

转载自blog.csdn.net/wuyileiju__/article/details/81320168