12
返回列表 发新帖
楼主: gavinwWELL
跳转到指定楼层
上一主题 下一主题
收起左侧

[二分/排序/搜索] first badversion用左闭右开区间有没有简洁的写法?

🔗
ctzsm 2020-6-8 03:12:09 | 只看该作者
全局:
2楼的写法是对的,我一直就这么写。我最近线段树也改成了左闭右开。

整个C++ STL的思想都是左闭右开,可以看看STL的源码。binary search看lower_bound()和upper_bound()的实现。https://en.cppreference.com/w/cpp/algorithm/lower_bound
回复

使用道具 举报

🔗
waerad2 2020-6-8 03:19:06 | 只看该作者
全局:
binary search 经常会出现死循环问题。 有一种无脑解法是这样:

loop condition:假如search值一定存在用 lo<hi, loop exit结果是lo, 假如不一定存在用 lo <= hi,loop exit 结果是不存在.

假如 lo => mid+1 或者 lo => mid 和 hi => mid-1 来update的话用 mid = (lo+hi) >> 1
假如 lo => mid 和 hi => mid-1 来update的话用 mid = (lo+hi+1) >>1
回复

使用道具 举报

🔗
hoooga 2020-6-18 13:02:40 | 只看该作者
全局:
gavinwWELL 发表于 2020-6-7 08:23
现学现用套用了几道题,这个技巧还挺好用的,请问有没有介绍类似技巧的书籍?谢谢

推荐关注一个youtuber Errichto。 他是竞赛高手,也讲解了很多基础算法。 比如这个视频里就提到了我说的这个技巧 https://www.youtube.com/watch?v=GU7DpgHINWQ
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表