博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分法模板
阅读量:5043 次
发布时间:2019-06-12

本文共 1062 字,大约阅读时间需要 3 分钟。

  我发现每次我做二分题目的时候,自己写的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 }

 

转载于:https://www.cnblogs.com/Philip-Tell-Truth/p/5175161.html

你可能感兴趣的文章
python中的逻辑操作符
查看>>
CSS兼容性常见问题总结
查看>>
HDU 1548 A strange lift (Dijkstra)
查看>>
每天一个小程序—0005题(批量处理图片大小)
查看>>
C# 启动进程和杀死进程
查看>>
tcp实现交互
查看>>
IIS的各种身份验证详细测试
查看>>
JavaScript特效源码(3、菜单特效)
查看>>
聊聊、Zookeeper Linux 单服务
查看>>
Linux常用命令总结
查看>>
yii模型ar中备忘
查看>>
C#线程入门
查看>>
CSS清除浮动方法
查看>>
JVM内存回收机制简述
查看>>
洛咕 P2480 [SDOI2010]古代猪文
查看>>
js-创建对象的几种方式
查看>>
JDK JRE Java虚拟机的关系
查看>>
2018.11.20
查看>>
word20161215
查看>>
12th week blog
查看>>