21.5.12 t3

tag:插值,扫描线


\(f_i\)\(i\) 时刻的答案。

对于单个点来说,对 \(f_i\) 的贡献为一个二次函数。

对于两个点来说,要减去重复部分,而重复部分对 \(f_i\) 的贡献也是一个二次函数。

同理,容斥以后每部分贡献都是一个二次函数,所以 \(f_i\) 实际上就是一个分段二次函数,而只有当两个点形成的菱形相交时才会形成一个段点。

所以先处理出每个段点,然后对于每一段带入任意 \(3\) 个点值就可以求出每一段的二次函数,然后求和。


对于单词求 \(f_i\),首先可以先旋转 \(45^o\),然后变成矩形面积并的问题,可以用扫瞄线。

复杂度 \(O(n^3logn+q)\)

posted @ 2021-06-25 09:38  oisdoaiu  阅读(58)  评论(0编辑  收藏  举报