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