uva1442Cav 洞穴

考虑单个底,双向拆分考虑,递归。
对于某个底,我们考虑计算出对于它的这样两个量:如果它右边是无限高的墙,那么它的水位最高是多高,如果它左边是无限高的墙,那么它的最高水位又是多高。两者取最小值就是这个底最终的最高水位,因为这个最小值恰好满足必要条件,并且是充分的。
然后用递归的思路计算左最高水位。
即如何在k的左最高水位已经得到的前提下计算k+1的左最高水位。
如果k的左最高水位介于floor[k+1]~ceil[k+1]之间,那么k+1的左最高水位也是这么大,如果大于ceil,那么k+1就是ceil,如果小于floor,那么我们令k+1的左最高水位就是floor,这样是合理的,因为任意比floor大的值都不是,比floor小的值不合适,并且可以供k+2递归参考。

你可能感兴趣的:(uva1442Cav 洞穴)