树状数组
代码随想录
代码随想录网站:https://programmercarl.com
展开
-
poj 2029 Get Many Persimmon Trees 二维树状数组
这道题很经典二维树状数组,模板题!!不解释,找模板打一A,可以看看我上一篇的树状数组里面有模板 #include using namespace std; #define max 105 int c[max][max]; int n,w,h,x,y,s,t; int原创 2011-08-21 10:28:20 · 1331 阅读 · 0 评论 -
poj japan 数状数组解决逆序数
这道提树状数组球逆序数 关键在于 问有多少哥焦点 即使焦点在同一个位置#include #include #include #include using namespace std; struct node { int x; int y; }a[1000005]; int c[1005]; int max1; bool cmp(node a,node b){ return (a.x<b.x)原创 2012-05-21 17:39:07 · 702 阅读 · 0 评论 -
poj 2309 BST 使用树状数组的lowbit
如果领悟了树状数组中的lowbit,这道题就是极其简单的,最底层都是奇数,用lowbit(x)寻找x的父亲,然后x的父亲-1就是最大数 至于lowbit是如何计算的嘛,寻找x的父亲,其实就是x+2^x的二进制末尾0的个数。 #include #include using namespace std; typedef long long ll; ll lowbit(int x){ re原创 2014-07-23 10:48:59 · 968 阅读 · 0 评论 -
树状数组的讲解感觉挺好,和我的一维,二维,树状数组的模板,希望对大家有用
树状数组 树状数组 问题提出:已知数组a[],元素个数为n,现在更改a中的元素,要求得新的a数组中i到j区间内的和(1 思考:对于这个问题,我们可以暴力地来解决,从a[i]一直累加到a[j],最坏的情况下复杂度为O(n),对于m次change&querry,合起来的复杂度为原创 2011-08-21 10:22:17 · 3207 阅读 · 0 评论 -
树状数组总结
又做了几道树状数组的题,决定放一块儿总结一下;恩,总结一下。。 (ps:大牛可以直接跳过。。。) 树状数组中用的d【】,每个点都有一定的管辖范围; 如d[1]=a[1]; d[2]=a[1]+a[2]; d[3]=a[3]; d[4]=a[1]+a[2]+a[3]+a[4]; 等等; 这样的结构关键是为了,对一个数组内部动态的删除,增加,来高效的求某个点或者某个区间的转载 2014-07-23 19:31:36 · 743 阅读 · 0 评论 -
HDU 1394 Minimum Inversion Number 树状数组
今天温习树状数组,果然忘记了好多,树状数组求逆序数,值得注意这道题所有的数都是0-n-1的,所以在求最小的时候不用每个数顺序在计算一遍,我已开始就是把每个顺序又计算了一遍,果断超时了。第i个数拿到后面去,逆序数会减少a[i]-1,同时会增加n-a[i] #include #include using namespace std; int a[5005],tree[5005],n; int low原创 2014-07-23 19:39:47 · 915 阅读 · 0 评论 -
poj 2352 Stars 树状数组
树状数组,果断1A啦,心情舒畅啊,哈哈 先按照y轴从小到大排序,然后一次加入并统计每个点得x坐标,这道题数据不严谨啊,在y轴相同得情况下,应该以x轴从大到小排序,可我都没排x轴就过了 #include #include #include #include using namespace std; int Max; struct node{ int x,y; }a[15005]; int原创 2014-07-24 10:14:47 · 841 阅读 · 0 评论