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

原文地址:https://www.cnblogs.com/agnes6/p/13896097.html