2019暑假杭二day6测试总结
T1
题目大意
给你一颗 个点的边权均为1的树,找到一个点 ,使得距离点最远的点最近,输出距离点最远的点到点的距离。
sol
输出树的直径除2向上取整。
证明略
T2
题目大意
给你\(n\)根木棍和\(m\)次询问,第i根木棍长度为\(a_i\),每次询问给你两个数\(l,r\),你要在\(l,r\)区间内选出3根木棍组成一个三角形,使其周长最大。如果区间内没有三根木棍能组成一个三角形,输出-1。\(1<=n<=10^5,1<=m<=5*10^5,a_i<=10^9\)
sol
这是多校联测的原题,根据贪心,先取出第一、二、三长的木棍,看能不能拼成三角形,不能则继续取出第二、三、四长的木棍,继续判断。最坏情况木棍长为斐波那契数列,第45项就超过\(10^9\)了,所以45次判断后一定能拼成三角形。现在,问题变成了区间第k大问题,由于不带修,主席树即可。时间复杂度:\(\Theta(45mlog_2n)\)。
T3
题目大意
给你一个长度为\(n\)的 01 串和\(m\)次询问,第\(i\)次询问会给你\(l\)和\(r\),你需要输出以\(l\)到\(r\)结尾的前缀中两两的最长公共后缀的最大值。
sol
还不会。正解要用SAM
和LCT
,十分毒瘤,可能短期内不能补上了。