有的读者也许会有这种想法:二分查找排除楼层的速度无疑是最快的,那干脆先用二分查找,等到只剩 1 个鸡蛋的时候再执行线性扫描,这样得到的结果是不是就是最少的扔鸡蛋次数呢? 很遗憾,并不是,比如说把楼层变高一些,100 层,给你 2 个鸡蛋,你在 50 层扔一下,碎了,那就只能线性扫描 1~49 层了,最坏情况...
有的读者也许会有这种想法:二分查找排除楼层的速度无疑是最快的,那干脆先用二分查找,等到只剩 1 个鸡蛋的时候再执行线性扫描,这样得到的结果是不是就是最少的扔鸡蛋次数呢? 很遗憾,并不是,比如说把楼层变高一些,100 层,给你 2 个鸡蛋,你在 50 层扔一下,碎了,那就只能线性扫描 1~49 层了,最坏情况...
有的读者也许会有这种想法:二分查找排除楼层的速度无疑是最快的,那干脆先用二分查找,等到只剩 1 个鸡蛋的时候再执行线性扫描,这样得到的结果是不是就是最少的扔鸡蛋次数呢? 很遗憾,并不是,比如说把楼层变高一些,100 层,给你 2 个鸡蛋,你在 50 层扔一下,碎了,那就只能线性扫描 1~49 层了,最坏情况...
现在,我们稍微修改dp数组的定义,确定当前的鸡蛋个数和最多允许的扔鸡蛋次数,就知道能够确定F的最高楼层数。具体来说是这个意思: dp[k][m] = n# 当前有 k 个鸡蛋,可以尝试扔 m 次鸡蛋# 这个状态下,最坏情况下最多能确切测试一栋 n 层的楼# 比如说 dp[1][7] = 7 表示:# 现在有 1 个鸡蛋,允许...
2019-12-16 15:36 − # 板子整理 ## 目录 * 排序(快排及其原理、sort、归并、以及STL中的compare写法) * 递归(排列问题、dfs、斐波拉契) * 二分(主要为例题) * dp问题汇总(背包、子序列、树形dp例题等等) * 计算几何(凸包、叉积) * 图算法(最小生成树、最大流、最短路径、二分图) * ... dbe...