「考试」省选4

瞎打了几个暴力上去竟然就能rk2.。。

考完发现是数据结构专项测试。
T1
由于所有的圆不相交,那么我们可以认为这些圆的上下位置是不变的。
很显然的一个树形\(dp\),复杂度瓶颈在于建树。
每个圆拆成上下两个,做一次平衡树扫描线。
排序的时候以\(y\)为第一关键字,上下半圆为第二关键字,编号是第三关键字。
每个圆有进入和出去两个操作,然后进入的时候先插入平衡树然后找前驱。
如果是下半圆说明是找到了父亲,否则是找到了兄弟,这样就可以建树了。
\(O(nlogn)\)的。

T2
简单的打表可以发现\(lcm(T(N,1),T(N,2)......T(N,K))=lcm(N-K+1,N-K+2......N)\)
这样考虑如何求这个东西。
我们构造一个数组\(D_n\)使得\(\prod\limits_{i=n-k+1}^{n}D_n[i]=lcm(n-k+1,......,n)\)
然后用skyh的说法就是最值差分。
首先\(D_n=D_{n-1}\)然后\(D_n[n]=n\)
这样有可能是不正确的。
那就找到较靠前的数来消去\(D_n[n]\)中的质因子。
然后用可持久化线段树就可以查询了。
由于\(n\)及以下的数的质因子总个数为\(nln\ ln\ n\)
那么复杂度就是:
\(O(nln\ ln\ n\ logn)\)

T3
傻逼静态仙人掌写了两百行树剖调不出来了。

猜你喜欢

转载自www.cnblogs.com/Lrefrain/p/12182242.html