3種樹狀陣列

2021-08-01 03:39:07 字數 765 閱讀 6461

1、單調更新,區間查詢。

sum(i)的意思是從1-i的和。

int n;

int c1[500];

int lowbits(int x)

int sum(int x)

return sum1;

}int add(int x,int y)

}int main()

2、區間更新,點查詢。

把上面**的add(x,k),add(y+a,-k)就是對區間進行修改,

然後單點查詢如sum(5),就是查詢5這個點的值

add(5,7);

add(10+1,-7);

cout << sum(5) << endl;

3、最後是區間更新和區間查詢。

#include #include #include #include #include #include #include using namespace std;

const int maxn=1e5+7;

int n,c1[maxn],c2[maxn];

int lowbits(int x)

void add(int *r,int pos,int v)

}int sigma(int *r,int pos)

return anx;

}int main()else

} return 0;

}

樹狀陣列(3)

樹狀陣列的一些基本題型吧 之前說過,樹狀陣列能做的東西線段樹都能做 這麼簡單的樹狀陣列能不能做線段樹經常要做的改點 段 求段 點 呢?廢話,這麼簡單的東西答案當然是能啦 1 codevs 1080 include include using namespace std int c 100010 l ...

華華和月月種樹(dfs序 樹狀陣列)

對一棵樹 初始只有 0 號節點,權值為 0 進行操作和詢問 操作 1 輸入格式1 i,表示使節點 i 長出了乙個新的兒子節點,權值為0,編號為當前最大編號 1 也可以理解為,當前是第幾個操作 1,新節點的編號就是多少 操作 2 輸入格式 2 i a,表示華華上線做任務使節點 i 的子樹中所有節點 即...

2017種樹題解

每棵樹的費用為 cost i sum x i x k 由於 x i 與 x k 的大小關係的存在,我們可以把它分成兩部分 sum x i x k x i x k,1 le k le i 1 sum x k x i x i x k,1 le k le i 1 上面 1 式繼續展開 sum x i su...