
树状数组
嘎达啊
无名小卒
展开
-
poj 2352
题意:按纵坐标升序给定N颗星星的坐标(x[i],y[i]),计算出每个等级的星星有多少,对于等级是这样定义的:对于第i颗星星,计算出1~i-1 颗星星中横坐标和纵坐标都比第i颗星星小的数量ans,那么ans就是此颗星星的等级。因为y是升序,所以就以 x 坐标为根节点,记录个数,注意横坐标不能为0 因为,x += lowbit(x) 将一直未0 死循环,#include #incl原创 2013-08-12 14:56:52 · 484 阅读 · 0 评论 -
树状数组
参考:http://poj.org/summerschool/1_interval_tree.pdfhttp://www.cnblogs.com/zjbztianya/archive/2013/05/02/3055119.htmlhttp://wenku.baidu.com/view/2c900203cc17552707220870.html翻译 2013-08-12 15:26:12 · 424 阅读 · 0 评论 -
poj 2299 Ultra-QuickSort 离散化+树状数组
因为输入的数据最多50w 而范围却远大于50w 所以要进行离散化所谓的离散化就是用一组较小的数据代替大的数据, 但对应的编码却不会变化,如开始的编码:1 2 3 4 5输入的数据:9 1 0 5 4排序的数据:0 1 4 5 9排序的编码:3 2 5 4 1离散化之后:1 2 3 4 5最终的编码:1 2 3 4 5最终的数据:5 2 1 4 3 树状数组:输入一个原创 2013-08-13 12:38:33 · 432 阅读 · 0 评论 -
poj 3928 Ping pong 树状数组
以裁判为基础计算,每个运动员的技术水平都是不变的,他们对应的编号也是不变的,首先将它们按技术水平排序,但对应的编码不变 如 技术:9 1 2 5 4编码 1 2 3 4 5 排序后: 1 2 4 5 9编码 : 2 3 5 4 1再找他们每个人的左边(比他小的) 有多少人, 右边(即比他大的) 有多少人,那么这个人就可以做 (左边*右边) 个人的裁判,同理 在反过来求, 如原创 2013-08-14 11:25:11 · 517 阅读 · 0 评论 -
SGU 180. Inversions 离散 + 树状数组
#include #include #include #include using namespace std;const int maxn = 70000;int n, aa[maxn], c[maxn];struct node{ int num; int ix;}a[maxn];bool cmp(node a, node b){ return a原创 2013-08-14 14:11:57 · 476 阅读 · 0 评论