您的位置:首页 > 理论基础 > 数据结构算法

ccnu 十一月半月赛 F题 会攻击的点 - 离散化 + 区间求和

2013-11-23 21:40 253 查看
好久没刷题了,刷下简单题练练。

题目大意:给定一组点的坐标,找出能够互相攻击的点的对数。

题目分析:考虑点i,那么只有和它同水平,或者同竖直,或者左上放或者右下方的点才能够和改点i攻击。所以首先想着按照x轴或者y轴排序。排序后可以暴力,但是数据有点大。所以就想着看能不能剪枝了。然后就试着先按照y轴排序,然后再按x轴排序,这样就可以得到当前点上下左右各有多少点了。当时这样还是没有用,没用能够剪枝。结果小贱贱的提示,才知道用区间求和。囧,当时没想到。然后看了一下暑假自己写blog,然后就A了。这里用的树状数组来区间求和的。

如果在位置i,我们想树状树状插入x,然后更新数组c[x],这样x之后的某些点就会被更新,当在位置i+1,插入y的时候,就可以根据数组c的值,来求出比y大或者小的数的个数了。以后再写一篇博客复习一下区间求和。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息