昨晚爽快战斗 爆肝到十二点多
比赛思路
- T1:按位贪心,判断发现可以用线性基,如果要求相同的话就将这两位合在一起,在之后要求这两位的异或值为0.
刚开始TLE90了(因为我的是NM2*2的,然后又用的是bitset),然后改手打bitset,WA90了,刚开始调不出来,转战T2T3之后再回来肉查才发现有个地方没有开longlong
- T2:N3都没有打暴力都没有打。。。
- T3:神奇的构造题?理解错了题意然后暴力都不会打,大胆打表获得10分。
赛后消化
- 一堆人过了T1,我才110分,菜爆了。
- T2好像是一个每一个点的DP值是一个凸壳,要支持将凸壳拍扁,用平衡树维护,启发式合并转移(口胡)
- T3理解完题意之后再想一想点分治似乎也不是那么难。
- 想了很久怎么根据每一层的重心将整棵树统一,最后发现只需要给边赋值然后DFS扫一遍就好了Orz。
难题选讲(计算几何)
- 捕捉原题。
- 话说计算几何我也就只能口胡了啊。
第一题
- 给n个圆(n<=200),问一个点能不能不经过任何一个圆覆盖的范围到无限远的地方。
- 两个圆相交就将它们圆心相连,判断一个点能否被一个多边形包围。
- 考虑将每一条边根据两个端点以询问点为原点的极角之差为边权,当作有向图,floyd找最大环,如果环的长度为,那么就被包围。
第二题
- 问随机去掉一个点后凸包的期望点数(n<=1e5).
- 经典题目。
- 考虑在凸包上的点,去掉之后会有一个三角形里的点加入凸包,每一个点只会被两个三角形覆盖。对于每一个三角形里的点做凸包即可。
- 问题在于怎么判断一个点在哪个三角形里面。
- 找到凸包的重心,然后极角排序,相邻点和重心将凸包分成n个三角形,每一个点可以找到一个区域,然后只需要判断这个区域两边的三角形就好了。
第三到五题
- 咕咕咕
总结
- 一天还是能搞出两题的,问题不大。
- 一些稍微复杂一些的数据结构我还不够熟练。
- 题意千万不能看错。