• 冲高端——交互选讲


    有一个匀速运动的点,初始位置和速度均属于 \([0,10^6]\)
    每次询问一个坐标,返回点在坐标左边还是右边,\(200\) 确定位置。
    题解:
    \(10^12\) 种不同的直线,然后每次近似找到比较中间的位置然后排除一半,询问复杂度 \(O(2\log v)\)
    然后如何找到近似位置呢,直接二分答案,可能的所有 \(v\) 对应的 \(p\) 是一段区间。
    然后直接做就做完了??时间复杂度 \(O(v\cdot\log^2 v)\),有点危险。
    我们考虑找到 \(\left\lfloor\frac{p+v\cdot t}{t}\right\rfloor\)\((p+v\cdot t)\bmod t\) 可以确定比较中间的点。
    然后发现两个东西值域都是 \(v\),所以直接可以暴力遍历值域,复杂度是 \(v\cdots \log v\)

    \(n\times n\) 的格子,每个格子内一个数。
    除了最大的格子,其他所有格子周围都有一个格子比他大。
    找到最大格子。
    题解:
    直接二分,具有单调性。

    字符集为 \(4\),第一个字符仅出现一次。
    每次问一个长度不超过 \(4n\) 的字符串,返回最长前缀在询问字符串中出现的长度。
    \(n+2\) 次确定字符串。
    题解:
    第一个 \(2\) 次确定,最后一个 \(2\) 次确定。
    每次 s+a||s+ba||s+bb||s+bc 返回 0->c,1->a,2->b 可以 \(1\) 次确定。
    刚好 \(n+2\) 次询问。

    有一个 \(01\) 串,知道 \(1\) 的个数奇偶性。
    每次问两个下标集合,如果 \(1\) 的个数不等,< 返回 0> 返回 1,否则返回任意一个。
    \(O(n)\) 算出来 \(01\) 串。
    题解:
    首先,本质上来说是按策略返回 \(S\ge T\)\(S\le T\)
    全局最大的那个肯定是 \(1\),我们可以 \(2n\) 次找到 \(1\)
    每次可以查询 \(a+b\le 1\)\(a+b\ge 1\),这样 \(a,b\) 肯定有一个 \(0\) 或肯定有一个 \(1\)
    然后判断一下 \(a,b\) 大小,就肯定能确定一个 \(0\)\(1\)
    每次迭代规模减半,最后一个通过 \(1\) 奇偶性即可。
    复杂度 \(7n+C\)
    优化:
    发现找 \(1\) 有点累赘,考虑比较 \(a+b\)\(c\)
    然后 \(a+b\le c\) 时显然 \(a,b\) 有一个 \(0\),可以 \(5n\)
    \(a+b\ge c\) 时是有问题的,我们可以得到 \(a,b\) 中较大的比 \(c\) 大。
    于是我通过 \(5n\) 的代价得到了一些确定的 \(0\) 和一条单调的链。
    要求它是单调链的话直接每次把链底最后一个拿出来比较。
    不全零,所以最后一个肯定是 \(1\)
    二分找到分界点,比较相邻两个数和和 \(1\) 来继续二分。
    然后就全部都确定了。

  • 相关阅读:
    主键、外键、复合外键的创建
    DbHelper and OracleHelper
    Oracle 给表添加主键和使ID自增、触发器、创建结构一样的表
    Oracle 参数化更新数据时报错:Oracle ORA-01722: 无效数字
    ASP.NET MVC 基础
    5. CSS新特性之浏览器私有前缀
    JavaScript-----15.简单数据类型和复杂数据类型
    JavaScript-----14.内置对象 Array()和String()
    JavaScript-----13.内置对象 Math()和Date()
    JavaScript-----12.对象
  • 原文地址:https://www.cnblogs.com/pealfrog/p/15193062.html
Copyright © 2020-2023  润新知