链接
https://www.luogu.org/problemnew/show/P3292
https://ac.nowcoder.com/acm/problem/20308
做题的经过(可以跳过)
这不是树上倍增维护线性基的裸题吗
然而我写了一整天
故事是这样的:
我先写了个自认为 q l o g 3 qlog^3 qlog3的树剖+线段树维护区间线性基,然后 T T T了,事后发现原来这个算法的复杂度是 q × ( 6 0 2 ) × l o g 2 n q\times (60^2) \times log^2n q×(602)×log2n(这不妥妥 T T T掉吗)
然后我又写了个真的是 q l o g 3 qlog^3 qlog3的倍增,谁知道洛谷机器慢的要死,还是 T T T了
然后我又写了个 q l o g 2 qlog^2 qlog2的倍增,洛谷上还是 T L E TLE TLE,我就开始怀疑人生,结果开了 O 2 O2 O2就过了,还挺快…
题解
就是个裸题,树上倍增维护线性基
查询的时候,最直接的做法就是一边往上跳一边查询,这样复杂度是 O ( q l o g 2 n l o g 2 2 60 ) O(q\ log_2n\ log_22^{60}) O(q log2n log22