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大或者小的数的个数了。以后再写一篇博客复习一下区间求和。
题目大意:给定一组点的坐标,找出能够互相攻击的点的对数。
题目分析:考虑点i,那么只有和它同水平,或者同竖直,或者左上放或者右下方的点才能够和改点i攻击。所以首先想着按照x轴或者y轴排序。排序后可以暴力,但是数据有点大。所以就想着看能不能剪枝了。然后就试着先按照y轴排序,然后再按x轴排序,这样就可以得到当前点上下左右各有多少点了。当时这样还是没有用,没用能够剪枝。结果小贱贱的提示,才知道用区间求和。囧,当时没想到。然后看了一下暑假自己写blog,然后就A了。这里用的树状数组来区间求和的。
如果在位置i,我们想树状树状插入x,然后更新数组c[x],这样x之后的某些点就会被更新,当在位置i+1,插入y的时候,就可以根据数组c的值,来求出比y大或者小的数的个数了。以后再写一篇博客复习一下区间求和。
相关文章推荐
- POJ.2299 Ultra-QuickSort (线段树 单点更新 区间求和 逆序对 离散化)
- hdu4288 Coder 离线线段树 单点更新 区间求和 离散化?
- hdu 1394 Minimum Inversion Number(单点更新,区间求和)
- NEFU 1268 区间最小值求和(单调队列||RMQ)
- Codeforces Round #376 (Div. 2) F 区间求和+二分
- POJ-1195 Mobile phones 二维线段树 区间求和
- HDOJ 1394 Minimum Inversion Number(求逆序数—暴力or线段树or树状数组:单点更新,区间求和)
- poj 3468 A Simple Problem with Integers(线段树+区间更新+区间求和)
- hdoj 1166 敌兵布阵 【单点更新+区间求和】 【线段树】 【树状数组】
- hdu1698(区间延迟更新+区间求和)
- NYOJ 116 士兵杀敌(二) (线段树区间求和)
- POJ 2528 Mayor's posters [线段树-区间更新+离散化]【数据结构】
- 树状数组 区间修改区间求和总结
- HYSBZ - 1036 (树链剖分单点更新,区间求和and最大值)
- HDU - 1394 - Minimum Inversion Number (线段树 - 单点更新,区间求和)
- Spark2 feature Bucketizer之将连续数据离散化到指定的范围区间
- 51nod1680:区间求和(BIT & dp)
- hdu1166 敌兵布阵(线段树单点更新+区间求和)
- FOJ 2171 防守阵地 II 区间求和区间查询 线段树
- [线段树+区间求和]LightOJ 1183 - Computing Fast Average