ABC 366E Manhattan Multifocal Ellipse

题意
给你 $ n $ 个在二位平面上的整点(即横纵坐标都为整数的点),以及一个距离阈值 $ D $,求有多少个整点 $ (x,y) $ 满足$ \sum\limits_{i=1}^n |x-x_i|+|y-y_i| \leq D $

思路
题目显然是要要求某个点到给定的 $ n $ 个点的曼哈顿距离之和,但是如果强行枚举点,根据数据范围显然是不可以通过的。那么我们仔细思考一下曼哈顿距离的性质,观察可得我们其实可以把一个二维问题拆维到两个一维问题。我们可以通过 $ O(nlogn) $的复杂度以内求得某个点距离这 $ n $ 个点的纵向距离之和并进行储存。然后我们在以相同的方式求一遍横向距离之和,对于每一个横向距离之和,我们都可以找到纵向距离之和的一个区间,统计这个区间桶有多少个元素即可。注意这里的查询是维护的一个区间信息,如果强行暴力循环就 $ O(n^2) $ 了,所以我们可以通过权值线段树来维护这个查询。至于在一个维度上求一个点到其他 $ n $ 个点的距离之和,我是通过前缀和加二分进行维护,就推导出了某个神秘公式,具体的看代码吧。

代码
https://atcoder.jp/contests/abc366/submissions/56570362

posted on 2024-08-11 09:44  Linear_L  阅读(159)  评论(0)    收藏  举报