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

好久没刷题了,刷下简单题练练。

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

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

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值