首页| 新闻| 娱乐| 游戏| 科普| 文学| 编程| 系统| 数据库| 建站| 学院| 产品| 网管| 维修| 办公| 热点
给出n个点,每个点有三围(x,r,f) 两个点是冲突的,当|xi−xj|≤min(ri,rj)且|fi−fj|≤k. k给出。 n≤105,0≤k≤10
想法一: 按x从大到小枚举点,每次在kdtree中询问xj≤xi+ri且xj−rj≤xi且|fj−fi|≤k的点的个数加入答案,再将(xi,xi−ri,fi)插入KDtree里。
觉得想法一要写起来好长,再想想
想法二: k最大就10,对每一个f值建二维线段树,然后查询?
还是好长
想法三: CDQ啊!。。忘了怎么写了,感觉也不短
想法四: 对每一个f将x离散化,并建BIT,存储差分数据,来表示线段(xi−ri,xi+ri)的覆盖(xi−ri的地方插入1,xi+ri+1的地方插入-1) 对所有点按照xi从大到小枚举,对fi−k到fi+k的BIT询问xi位置覆盖了几条线段,加入答案中。 同时将xi−ri记录下来,每次询问之前将xj−rj<xi的点都在相应的BIT中删去,这样就能保证每次询问合法了。
索泰发布一款GTX 1070 Mini迷
AMD新旗舰显卡轻松干翻NVIDIA
索泰发布一款GTX 1070 Mini迷你版本:小机
芭蕾舞蹈表演,真实美到极致
下午茶时间,悠然自得的休憩
充斥这繁华奢靡气息的城市迪拜风景图片
从山间到田野再到大海美丽的自然风景图片
肉食主义者的最爱美食烤肉图片
夏日甜心草莓美食图片
人逢知己千杯少,喝酒搞笑图集
搞笑试卷,学生恶搞答题
新闻热点
疑难解答
图片精选
使用ASP建设私人搜索引擎
华为短消息中心的发展与应用
移动通信计费及客户服务系统
移动客户服务中心系统
网友关注