画圆的沙滩

亦简亦美

查询最近和与最大最小值

编程之美2.12节。可参考

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=113&page=show_problem&problem=1428

关于扩展问题,先考虑三个数的情形:首先排序,如果所有数都小于sum/3或者大于sum/3,那么肯定不会有解。不妨考虑存在小于等于sum/3的情形,可以肯定<=sum/3的数中必定要取一个。在取定了一个<=sum/3的数之后,我们可以在大于这个数的范围内寻找剩下的两个数,这时问题即转化为了初始问题。对于任意的n个数,可以递归这个过程。对于最近和问题,适当改进之后即可。

至于编程之美2.10节,算法导论中有细致的解答。其中的扩展问题,如果要保证查询到第二大的数,查询次数不会少于2N-1。分治也无法降低次数。

posted on 2011-03-25 10:11  acmaru  阅读(197)  评论(0编辑  收藏  举报

导航