21.5.12 t3
tag:插值,扫描线
设 \(f_i\) 为 \(i\) 时刻的答案。
对于单个点来说,对 \(f_i\) 的贡献为一个二次函数。
对于两个点来说,要减去重复部分,而重复部分对 \(f_i\) 的贡献也是一个二次函数。
同理,容斥以后每部分贡献都是一个二次函数,所以 \(f_i\) 实际上就是一个分段二次函数,而只有当两个点形成的菱形相交时才会形成一个段点。
所以先处理出每个段点,然后对于每一段带入任意 \(3\) 个点值就可以求出每一段的二次函数,然后求和。
对于单词求 \(f_i\),首先可以先旋转 \(45^o\),然后变成矩形面积并的问题,可以用扫瞄线。
复杂度 \(O(n^3logn+q)\)