三分答案,可以用来求解凹函数或者凸函数的最值问题。
当然,此类问题也可以通过对该函数求导,转换成对于导函数的二分答案问题(不过有一些函数可能不太能求导?)
三分答案的原理是在l与r之间再取两个点lm与rm,将[l,r]区间分为三段,比较f(lm)与f(rm)的值。假设函数为凹函数求最小值,且f(lm)<f(rm),那说明lm更加靠近最值点(当然左右不均衡,只是一种形象的说法),那也就说明rm一定在最值点的右边,r=rm。对于其他情况以及凸函数同理,就是基于这么一种思想,可以使得l与r不断向最值点逼近。主要是思想就是保证在缩小的过程中最值点一直在[l,r]当中。
这里记录了一下两个三分答案的模板(都是求凸函数的最大值,正好与上面相反,可以帮助加深理解,凹函数的同理,理解以后非常好写),第一个是整数的三分答案,第二个是浮点数的三分答案模板:
1 | //整数三分答案 |
1 | //浮点三分答案 |