摘要: 开始用链表写,可是申请空间导致无限MLE,蛋疼的无以复加懒得写,默默剽窃个,自己写了注释#include typedef struct{ int left,right,max; int lChild,rChild;}SegTree;SegTree list[800000];// int max(int a, int b)//求最大 { return a > b? a:b;}void createSegTree(int root, int left, int right){ int mid; if(right = 1)//在区间内,但未找到 { ... 阅读全文
posted @ 2013-07-25 20:42 执着追求的IT小小鸟 阅读(151) 评论(0) 推荐(0) 编辑
摘要: #include#include#includetypedef struct CNode{int L,R; //区间起点和终点int key;//兵力int add;//这是记录增量 struct CNode * left, * right;//放置左右孩子指针 }IT;IT *creat(int l,int r)//建树,用二叉链做,压力。。 { IT *s=(IT *)malloc(sizeof(IT)); s->L=l; s->R=r; s->key=0; if(l==r)//左右相等,表示只有自己一个节点了 { s->left=s->right=NULL. 阅读全文
posted @ 2013-07-25 15:46 执着追求的IT小小鸟 阅读(175) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1166树状数组的运用,关键在于理解树状数组的建立及相关操作操作主要分四个:一:管辖域的求解就是2的k次方,有公式:cn=a(n-a^k+1)+.........+an(其中 k 为 n 的二进制表示中从右往左数的 0 的个数)。则可以用函数lowbit(n)直接求出二,单个数的调整当有一个数发生改变时,管辖到它的数也要做相关的调整三,求和将管辖到的数加上未管辖到的数四,建树有公式: c[i]=sum[i]-sum[i-lowbit(i)];i从1开始#include#include int a[50010], 阅读全文
posted @ 2013-07-25 11:22 执着追求的IT小小鸟 阅读(192) 评论(0) 推荐(0) 编辑