zoukankan      html  css  js  c++  java
  • ACM模板——二分查找

     1 #include <bits/stdc++.h>
     2 #define _for(i,a,b) for(int i = (a);i < (b);i ++)
     3 #define pb push_back
     4 #define maxn 100
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     vector<int> v{1,9,8,5,3,2,39,100,92};
    10     sort(v.begin(),v.end(),less<int>());
    11     cout << v[lower_bound(v.begin(),v.end(),39)-v.begin()] << endl;
    12     cout << upper_bound(v.begin(),v.end(),39)-v.begin() << endl;
    13     cout << binary_search(v.begin(),v.end(),40) << endl;
    14     return 0;
    15 }

    lower_bound(开始地址,结束地址,待查找数),返回第一个大于等于待查找数字的地址

    upper_bound(开始地址,结束地址,待查找数),返回第一个大于待查找数字的地址

    binary_search(开始地址,结束地址,待查找数),找到返回1,没找到返回0

     1 int x[maxn];
     2 bool C(int d)//C为测试函数,判断此解是否可行
     3 {
     4 
     5 }
     6 int solve(int N)
     7 {
     8     sort(x,x+N);
     9     int lb = 0,ub = INF;
    10     while(lb < ub)//for(int i = 0;i < 100;i ++) or 1改成eps 
    11     {
    12         int mid =  lb+(ub-lb)/2;
    13         if(C(mid)) lb = mid+1;
    14         else ub = mid;
    15     }
    16     return lb;
    17 }
    假定一个解代入测试
  • 相关阅读:
    前端面试集锦
    nodeJs上传附件
    逻辑于 逻辑或
    webpack 学习笔记 (一)
    yum 安装mongodb mysql
    闭包面试提 (2)
    主动的重要性
    1.1一天一题:逆转字符串
    编程提高:一天一道编程题
    iconv将文件编码从gb2312 转换为utf-8
  • 原文地址:https://www.cnblogs.com/Asurudo/p/10115822.html
Copyright © 2011-2022 走看看