最大的K元组

问题概述:共有N个K元组(x1,x2,x3…xk),一个K元组最大,当且仅当没有一个K元组每个xi都比它大。求最大K元组。一般地,为了问题更加简洁,每个xi都为小于等于N的正整数,K看为较小的常数。

朴素算法无论K等于几,均可在至多O(n^2)时间内解决。

当K=1时,O(n)查找。  相关题目:不解释

当K=2时,O(n)双关键字基数排序。 相关题目:NBOI2011牛人(xi任意,快排即可)

当K=3时,O(nlogn)线段树。 相关题目:空心长方体

当K=4时,O(nlognlogn)树套树。 相关题目:东方幻想乡模拟赛第5场yousei

当K=5时,O(nlognlognlogn)树套树套树。

当K=6时,O(nlognlognlognlogn)树套树套树套树。

当K=7时,O(nlognlognlognlognlogn)树套树套树套树套树。

……

 

在一般OI竞赛中,对于K≤4,上述算法应该说是最优的;

对于K≥5基本上没有“套树”的必要了,因为朴素算法已经相当快了,且简单的优化后速度更是无压力,且没人无聊会去写树(套树)^二方及以上,但理论上,O(n^2)和O(n(logn)^(k-2))还是有本质区别的。

posted @ 2012-03-08 19:58  FancyCoder0  阅读(413)  评论(0编辑  收藏  举报