毒瘤全家桶。
T1
考试的时候打的差一个符号就有70了qwq。
我们把直线交矩形框的点都找出来。
然后按照矩形的重心为原点进行极角排序。
对于一条直线来说。
设两个端点的角度分别是(a_x,b_x),那么我们令(a_x<b_x)。
这样两条直线相交的条件就是:
[a_xleq a_yleq b_xleq b_y
]
我的做法是按照(a_x)排序,然后主席树上放每个位置的(b_x)值。
对于每一个(x)在({a})上二分出最大的位置(pos),使得(a_{pos}leq b_x),
然后再从主席书上查询有多少个(jin[x,pos])使得(b_j<b_x)即可。
复杂度是(O(nlogn))的,卡精度。
T2
大神数论题
设答案是(f(n))。
首先我们发现这个东西是积性函数。
那么我们可以质因数分解,然后求(f(p^k))来合并。
然后可以发现(f(p^k))当(p
ot=2)的时候就是二次剩余的个数。
这种情况可以枚举质数来统计答案。
如果(p=2)的时候,可以打表出答案。
分解用(pollard rho)就可以了。
T3
打表打出(nleq 10,kleq 8)的时候一个连通块的答案。
然后用组合数之类的做一个背包(dp),这样复杂度是(O(n^2k))的。
然后我们用贝尔数优化一下(dp)的枚举,这样的复杂度就是(O(n^2))的了。