leetcode887 鸡蛋掉落

这题朴素的O(nk n) 的记忆化搜索方法是很容易的,

但是关键就是将其中一层n的循环有效的优化成logn。

原始的情况是对

\[t \in [1,n] \]

的每一个\(t\),计算

\[min(max(f1(t), f2(t))) \]

想到这直接的想法肯定就是来个循环,遍历每一个关于\(t\)\(f1\)\(f2\),最后找到结果。

  • 但是这题巧妙的地方就在于,\(f1\)\(f2\)是有规律的,一个单调递增,另一个单调递减,如下图所示

f1f2

他们两个求最大最小,必然是在二者之差绝对值最小的时候取到。

而二者之差,是单调的,于是二分搜索就可以用了,至此就完成了一个O(nk logn)的解法,直接AC

posted @ 2020-10-29 12:34  AGkd  阅读(51)  评论(0编辑  收藏  举报