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...