目录
复盘
7:40 下早读,到机房开题。读完题感觉难度不小
8:00 开 T1,慢慢推性质发现有些边没用,留一棵最早的生成树就行,但对询问 区间 [l,r] 中的点在树上的具体位置的不好处理。
考虑到 如果把所有点按编号排的话就能用线段树维护了,而且这个 “限制” 只与连通块内最大边权有关,想到 Kruskal 重构树。不敢相信 T1 会考这玩意?但再想想发现很正确,直接开码
加上一些回忆的环节,8:50 过掉了大样例,但跑 7s 多,不知道怎么脑子抽了,想在线段树上动态维护 LCA,复杂度直接飙 n l o g 2 nlog^2 nlog2,寄。还是先交
偶然想到之前 zyz 学长提过的 O1 LCA,觉得这玩意行,码
9:40 过大样例,直接交了
T1 花了 2h,小慌,开 T2,貌似是道智慧题
先拿暴力和性质,暴搜好恶心,栈模拟细节好多,自闭 。10:20 过了自己 造的样例
去看性质,发现性质分好拿多了,但可能会假,10:50 码完交了
没多少时间了,看 T3 ,数学题
简单打表发现有周期,看一眼数据范围:暴力能拿 15,性质A暴力扫周期有 25,稳了开码
11:20 码完交了。
T4 竟然交一发包子皮给一分,稳了!
最后看 T2 ,感觉会挂,遗憾离场
分数:100 + 30 + 40 + 1 = 171
排名:rhk_1
T1 没挂分,但赛后听 czl 大佬说才知道不用动态维护 LCA,线段树上合并最大值就行啊!!!
所以记住:kruskal 满足 大/小根堆性质,合并最大值,而不是LCA;其次,静态区间问题完全可以用 ST 表代替线段树
T2 的 DP ,对性质还是要推一推