zoukankan      html  css  js  c++  java
  • 二分小技巧

    有一些题目,常常会用到二分,但无良的出题人总是会卡人们的二分。。。比方说你每次二分总要分满log次,而且还总要分n次,这样效率就变成了n*log(n),很是GG。但是思考发现我们的二分存在一个小问题,就是说右端点总是被卡死的,如果解决这个瓶颈,便能实现不被卡。

    而能二分说明它一定有二分性质,也就是说我们可以来次倒着的二分确定它的届。

    假设说最低是l,先试试l+1,再试试l+2^1,再试试l+2^2,再试试l+2^3……知道你找到了一个不合法的r=l+2^k,好的,你就把它当r,l=l+2^(k-1)(因为之前确定是合法的了),来二分,和普通二分无异。这样可以处理掉极端数据,由于你确定r的过程也是单log(n)的,所以理论复杂度没有太大变化。

    当然,要注意的是,你确定二分方案可行的check不能复杂度太高!常数是很可怕的,有时候并不一定能接受。不要每个二分都这么打,有可能会聪明反被聪明误。

  • 相关阅读:
    2. 逻辑运算
    1. 条件
    6. 可变不可变类型
    5. 基本运算符
    4. 与用户交互
    12 .命名的EIGRP和EIGRP v6
    11. EIGRP路由SIA
    Redis 快速入门 -- Redis 快速入门(2)
    Redis 快速入门 -- Redis教程(1)
    Redis 百度百科
  • 原文地址:https://www.cnblogs.com/Atoner/p/8111355.html
Copyright © 2011-2022 走看看