zoukankan      html  css  js  c++  java
  • 二分法模板

      我发现每次我做二分题目的时候,自己写的upper_bound和lower_bound老是会出错。

      而且对于普通的整数二分的时候lb和rb不好控制

      虽然有时候可以直接用模板的STL,但是感觉对于某些问题还是不是很方便(主要是对于模板struct不是很支持)

      我直接模仿stl写了两个自己用的模板,以后就用这俩就好了,不用烦了

     1 typedef int Type;
     2 static int _array[];
     3 
     4 Type *Binary_Lower_Bound(int &sum_comb, Type val)
     5 {
     6     int lb = 0, mid, count1 = sum_comb, count2;
     7     while (count1 > 0)
     8     {
     9         count2 = count1 >> 1;
    10         mid = lb + count2;
    11         if (_array[mid] < val)
    12         {
    13             lb = mid + 1;
    14             count1 -= count2 + 1;
    15         }
    16         else count1 = count2;
    17     }
    18     return &_array[lb];
    19 }
    20 
    21 Type *Binary_Upper_Bound(int &sum_comb, Type val)
    22 {
    23     int lb = 0, mid, count1 = sum_comb, count2;
    24     while (count1 > 0)
    25     {
    26         count2 = count1 >> 1;
    27         mid = lb + count2;
    28         if (_array[mid] <= val)
    29         {
    30             lb = mid + 1;
    31             count1 -= count2 + 1;
    32         }
    33         else count1 = count2;
    34     }
    35     return &_array[lb];
    36 }
  • 相关阅读:
    springboot + self4j 学习笔记
    git 创建本地分支,并且推送到远程分支
    windows 下生成 ssh key
    Topshelf
    ADSL拨号连接
    EF中使用Contains方法
    elasticsearch中的概念简述
    CriticalFinalizerObject的作用
    sqlserver中的统计语法
    Windbg简单介绍
  • 原文地址:https://www.cnblogs.com/Philip-Tell-Truth/p/5175161.html
Copyright © 2011-2022 走看看