首页 > 其他 > 详细

省选模拟11

时间:2020-04-19 09:55:17      阅读:49      评论:0      收藏:0      [点我收藏+]

T1:
设计f[i]表示乘积为i的子集有多少个,对于数x来说只能转移其倍数的位置
把相同的数放在一起考虑,就可以把复杂度降到\(O(n+klnk)\)
正解是洲阁筛,不会。。。

T2:
显然给的是一棵字典树,那么LCS长度就是dep[lca(u,v)]
对于LCP,可以建出广义SAM,然后LCP的长度就是len[SAM_lca(u,v)]
如果按照parent树的dfs序将点插入线段树,那么显然相邻的点的LCP最大
那么就在原树上线段树合并就完了

T3:
只需要动态维护元素的大小关系就行了
考虑用两棵平衡树,元素分别为x和(x,y)
第一棵用来查排名,第二棵用来计算新节点的排名
复杂度\(O(nlog^2n)\)
感觉如果用重量平衡树维护double权值的话应该能做到\(O(nlogn)\)(类似后缀平衡树的想法)

省选模拟11

原文:https://www.cnblogs.com/Gkeng/p/12730065.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!