天天看點

bzoj1789 AHOI 維護數列(線段樹)

首先想到線段樹,然後剛開始寫忽然想到樹狀數組求和豈不是更快,而且程式設計複雜度又小,于是把之前寫的删掉,寫樹狀數組,寫完模版之後忽然發現這題竟然是區間修改!

于是又删掉重寫,忽然發現不會處理又加又乘的,果斷看題解……

經過幾乎兩個小時的調試,終于1A。

需要注意的是,一定要讓線段樹的每一個區間儲存的值時刻為正确的,這樣才能在調用時直接傳回。比如說這道題的change和query操作的最後一句話:

sum:=f(g[k<<1]+g[k<<1+1])

而不是

sum:=f(t[k<<1].sum+t[k<<1+1].sum)

時刻記住這點就ok了。一開始我還以為我的模版記錯了呢……

代碼:

View Code

雖然現在已經12:30了,但我感覺,很開心。做了這道題,值!