[省选联考 2021 A/B 卷] 宝石

大概是一眼看出来是这个给定序列在树上序列上按顺序跑最大匹配。
然后考虑维护向上和向下的链的值。
大概的做法是用倍增维护,考虑\(f_{u,i}\)\(c_u\)在序列里的位置向后匹配\(2^i\)位的从\(u\)向根走的树上位置
这样就做完了\(u->lca\)的部分,然后\(lca->v\)考虑二分答案上跳。
记录\(g_{u,i}\)\(c_u\)在序列里的位置向前匹配\(2^i\)位的从\(u\)向根走的树上位置
考虑二分\(mid\),找出\(v\)的祖先里的第一个\(c_{f_v} = mid\)
然后考虑做这些信息就行了。
当然口胡不太靠谱,数据出来之后写一遍。

posted @ 2021-04-14 20:51  fhq_treap  阅读(117)  评论(0编辑  收藏  举报