0%

3rd Ucup Stage 1 St.Petersburg 题解

A

bitset优化,\(C_{i,j}\) 为1表示 \(a_i>a_{i+j}\) ,题目条件就是该矩阵的连续列,简单位运算即可求出。

B

image.png
image.png

多边形边数\(3\le n\le 10^4\),拓展点数\(m\le 3\times 10^4\),询问数目\(k\le 3 \times 10^4\)

最简单的想法是直接建系用double判断,然后发现不是很行,因为精度问题,一方面它可以让一些点非常逼近,另一方面它可以让点的坐标绝对值非常大。但是考量这个若至做法,发现似乎只需要比较相等这样的操作,似乎可以尝试用哈希之类的方法映射点到整数域上去。结合多边形想到单位根,结合一下质数就能想到用原根哈希。

所以最终的做法是,找一个大质数\(P\)满足\(P=n\times t+1\),然后把多边形的顶点换成原根的对应幂次。判断答案,首先判断是不是所有点都一样,然后判断每次询问的点集大小\(r\)是不是\(lcm(n,2)\)的约数,最后像单位根那样旋转向量判合法性。然后因为点的个数\(4\times 10^4\),为了防止哈希冲突\(P\)应该至少\(1.6\times 10^9\),最好更大。

G

启发式找哈密顿路,每次找一条边,加入边集,考虑断边,当边集大小为 \(n-1\) 时则找到了一条合法哈密顿路。

M

只维护最近的事件,大模拟。