差不多花了10天學樹狀陣列,是照著這篇部落格做的題目,還差幾道----------
1.幾個注意的地方
1)lowbit(0) + 0 會無限迴圈,會導致tle掉,給輸入進去的x++一下就好
2)當給的x的範圍很大的時候,注意要離散化
2.然後就是兩個基本的操作
1) add()
2) sum()
3.複雜度是log (n)
4.現在做到的題目有這些
1) 單點更新,區間求和,(區間求和有一維的,有二維的)
2) 區間更新,單點查詢 ,(詳見那篇**,可以推廣到n維的情況)
3) 求乙個數前面有多少個數比它小,這種可以用來求逆序對,或者加一些限制的條件來求一些東西
5. 還有乙個是初始化
如果最開始的每個點1的值是1的話,c陣列可以初始化為c[i][j] = lowbit(i) * lowbit(j)
或者兩重迴圈add(i,j,1)
大概就是這麼多,之後再做到題目再總結~~~~
樹狀陣列小結
最普通的樹狀陣列 實現用low bi tlowbit lowbit 的優秀性質 原理很簡單 pragma gcc optimize o3 pragma g optimize o3 include include include define maxn 500005 define ll long lo...
樹狀陣列學習小結
樹狀陣列,又稱二進位制索引樹,英文名binary indexed tree。一 樹狀陣列的用途 主要用來求解數列的字首和,a 0 a 1 a n 由此引申出三模擬較常見問題 1 單點更新,區間求值。hdu1166 2 區間更新,單點求值。hdu1556 3 求逆序對。hdu2838 二 樹狀陣列的表...
樹狀陣列小結(未完待續)
最近剛剛深入到了樹狀陣列是什麼,上年寒假學過,但是當時完全聽不到,最近兩天沉下心來,好好看了下,終於懂這個原理是什麼,感覺並不是很難,而且很好用。這個圖應該更好理解 d 1 a 1 d 2 a 1 a 2 d 3 a 3 d 4 a 1 a 2 a 3 a 4 依次類推,6管著5和6 8管著前8項,...