题意:
给定一个数列,每次询问一个区间,问这个区间中的值可组成的周长最大的三角形的周长。
题解:
定理1:给定一些值,这些值中组成边长最大的三角形的三条边的大小排名一定是连续的。
证明:假如第k大,第k+1大,第k+2+b(b>0)大的三条边组成了一个边长最大的三角形,那么较小的两条边加起来长度大于第三边,又因为第k+2大的边比第k+2+b大的边长,因此把第k+2+b大的边换成第k+2大的边组成的三角形边长一定比原来大,矛盾。
定理2:如果三角形边长被限制为1e9以内的正整数,那么如果某组值存在周长最大的三角形,一定由前45大的边组成
证明:假如三角形由第44,45,46大的边组成,那么由定理1,前45大的边都组不成三角形,不妨令这个已组成的三角形的周长最小,三边分别为1,1,1,那么,如果要让第k,k+1,k+2大的三条边组不成三角形,必须令第k大的边大于等于后两条边之和。不难推出,第k大的边大于等于Febnacci[46-k],最大的边至少为Feb[45],已经超出1e9的范围,矛盾
有了这两个命题,此题的解法就一目了然,对于每个询问,找出该区间内前45大的值,依次询问排名连续的三个是否能构成三角形。
用主席树维护区间第k大,复杂度O(qlogn*c) c=45
hdu多校第二场1011 (hdu6601) Keen On Everything But Triangle 主席树
原文:https://www.cnblogs.com/isakovsky/p/11248559.html