树状数组
Cliu__
自己选择的路,就算跪着也要走完!
展开
-
POJ 3321 Apple tree
一看数据范围便能猜到要么是O(n),要么是n*log(n)的算法,并且这个查询和更改操作使人很自然地想起了树状数组,但是树状数组只能对区间进行操作,而题目的数据给出的是树的形式,需要将根节点和它的子树这个范围变成[ , ]区间的形式。我们可以从根节点出发用时间戳st[]记录开始位置,用end[] 记录结束位置,dfs根节点,求出每个点的区间,然后就变成了对区间的操作,查询区间操作依然是用r-(l-原创 2017-07-19 15:00:12 · 257 阅读 · 0 评论 -
洛谷P3374 树状数组
https://www.luogu.org/problem/show?pid=3374用树状数组对单个数据操作,然后查询一段区间。 注意:对单个数据操作前应将初始值加入树状数组中。#include<iostream>#include<cstdio>using namespace std;int n,m,a[500005],p,x,y,t[500005];int lowbit(int x){原创 2017-08-30 19:28:34 · 1451 阅读 · 0 评论 -
洛谷P3368 树状数组
https://www.luogu.org/problem/show?pid=3368对每个区间中的每个数进行操作,输出某一个数的值。 对区间操作时,应该让 [1-(l-1)]-x, [1-r] +x.#include<iostream>#include<cstdio>using namespace std;using namespace std;int n,m,a[500005],p,x原创 2017-08-30 19:31:44 · 503 阅读 · 0 评论