[联合集训6-9]Congroo 二进制分组+凸包上二分
查询叉积最大值就是找该向量切凸包上的切点。因为只有在末尾加入删除的操作,我们利用二进制分组,维护loglog\log个凸包,询问的时候在每个凸包上二分找切点即可。
要注意要分别对上下凸壳二分,因为凸包是一个环但二分其实是对一个序列二分,所以直接二分会挂。
程序里还有几个复杂度不对的地方:
1. 二进制分组应该有四个相同的才把前两个合并,而不是有两个相同就合并,否则每次加入/删除第2k2k2^...
原创
2018-06-14 20:29:18 ·
597 阅读 ·
0 评论