今天上午又做了一遍昨天練習賽的a題,一道搜尋題,但還是用了不少時間去除錯**。所以別的題也只是看了看。有一道是以前做過的題。感覺改題真的太浪費時間了。。所以要及時做好總結,寫**的時候爭取認真注意細節。
下午又開始學新的東西了。上一周學的優先佇列,做的幾個題感覺都差不多。上乙個專題也差乙個題ak。看了看題。。感覺太麻煩了。。於是開始看樹狀陣列。
對於樹狀陣列,先是看了看演算法競賽的書上的內容,了解了樹狀陣列的結構以及運用過程。樹狀陣列可以高效的解決一些問題。例如區間的資訊的查詢等。而其比較主要的兩個操作就是add和sum操作。
而對於樹狀陣列,也要注意其下標的問題。樹狀陣列用的比較多的還是求某一區間的和。
下面是比較常用的兩個add和sum的實現方式。
先寫乙個計算二進位制最右邊1的**:
int lowbit(int i)
然後add操作:即令a[i] += v
void add(int i,int v)
}
然後是sum操作:即求得a[1] + ... + a[i]的和
int sum(int i)
return sum;
}
要注意的問題是剛開始的陣列要全部置為0,然後輸入a[i]的過程中對c陣列進行初始化。
明天還要繼續努力。
暑假集訓日記 8 17 樹狀陣列 練習賽
今天上午繼續學習樹狀陣列。看了幾個例題,加深了一下理解。樹狀陣列能解決的問題比較有限,但是解決起某一類的問題來非常好用。還在努力的看部落格,學習過程中。然後下午是一場練習賽。練習賽的b題是一道二分,而且我感覺以前講過,就寫了。然後蒙了一發最後一道題,結果對了。我以為會超時的。然後就在看a題,一直沒怎...
暑假集訓日記 8 21 樹狀陣列
今天一天在看樹狀陣列的例題。然後自己做。之前看過的例題自己再做一遍,但是還是想的不深入。感覺思路還是不夠清晰。今天在hdoj上交了一道題。雖然是原題。但是也是認真思考過的然後寫出來的。現在拿到乙個樹狀陣列的題,感覺還是不知道怎麼用樹狀陣列去解決。還得多聯絡。新的專題前天就開始了。到現在看也有做了10...
練習賽1(AC題)
現請你構建乙個n n的矩陣,第i行j列的元素為i與j的乘積。i,j均從1開始 輸入的第一行為乙個正整數c,表示測試樣例的個數。然後是c行測試樣例,每行為乙個整數n 1 n 9 表示矩陣的行列數。對於每一組輸入,輸出構建的矩陣。2 141 1 2 3 4 2 4 6 8 3 6 9 12 4 8 12...