T1:
显然可以想到一个简单的线段树维护线性基的做法,复杂度高达 (O(nlog^2n + qlog^3n)),使用st表的话可以做到 (O(nlog^3+qlog^2n))。
进一步发现对于相同左端点的区间,越靠右线性基内的元素越多。可以将询问离线,从右到左处理。每次将枚举到的元素从左到右往线性基里面插入,若无法插入则说明右侧的所有线性基都不可再插入。可以发现复杂度是 (O(nlog^2n)) 。
再进行优化,可以尽可能的用靠左的元素来替换掉线性基里面旧的元素。这样只需要维护一个线性基即可。复杂度降到了 (O(nlogn)) 。
T2:
和前一天写的一道题有一点点相似~
把边全都连上,然后跑最短路就完事了。
T3:
并不会qwq