(對於乙個數,想將它乘以二就將其左移一位,再想加一就|1)
對於乙個陣列(大小為n),我們可以通過乙個線段樹陣列(大小約為4n),用來儲存其某段區間的資訊,例如最大值,區間和。
通常會有build函式,用來建造線段樹。
void
build
(int l,
int r,
int i)
int mid =
(l + r)
>>1;
build
(l, mid,i<<1)
;build
(mid +
1, r, i <<1|
1);pushup
(i);
}
modify函式,修改區間資訊。
void
modify
(int ji,
int shu,
int i)
int mid = tree[i]
.left + tree[i]
.right >>1;
if(ji <= mid)
modify
(ji, shu, i <<1)
;else
modify
(ji, shu, i <<1|
1);pushup
(i);
}
query函式,返回區間資訊。
int
query
(int l,
int r,
int i)
經典例題:修改單點資訊,hdu-1166、最大區間和,spoj - gss1 演算法訓練 第四日日記
bfs 從起點開始,逐步向外擴散,擴散的過程中將點入佇列。矩陣迷宮尋終點問題 poj 2251 從二維到三維的過程 dfs 從某點開始,按照邊不斷遞迴搜尋下乙個點 n皇后問題 二分圖染色 對於一張圖,如果可以把點分配成兩派,某一派中,點之間沒有關係,只存在派與派之間的關係,因此,在搜尋中,可以將某一...
4月8日,日記
今天4月8日,又是乙個週末。天氣不錯,氣溫比較高,最高溫度有27 週末待在家裡,早上睡個懶覺,上上網,聽聽 也是一件很愜意的事情。最近上班在忙著寫乙個壽險業務系統的概括的手冊。今年剛上班的時候就開始寫了,拖拖拉拉到現在還沒有寫好。這個文件,也算是自己在壽險行業工作這麼多年,對壽險業務系統認識的乙個總...
ARTS訓練第五周
做的是485 max consecutive ones,算是很簡單的題目,一次線性掃瞄,乙個變數記錄由0至1的翻轉,兩個變數記錄當前max序列長度和當前序列長度,乙個記錄位置的變數。很容易就寫出來了。define max a,b a b?a b int findmaxconsecutiveones ...