1. 程式人生 > >[Bzoj 4299][主席樹]ForbiddenSum

[Bzoj 4299][主席樹]ForbiddenSum

我們可以得到一個充分必要條件: 我們記vi為區間內小於等於i的數的和 那麼答案為第一個i,滿足vi<i 如果我們現在求得at,val 其中val是區間內小於等於at的數的和 那麼對於小於等於val的i,都可以被某個子集和表示出來 於是,我們可以轉移到 (val,小於等於val的數的和) 這時如果val==小於等於val的數的和 我們可以轉移到(val+1,小於等於val+1的數的和) 如果小等於val+1的數的和<val+1,那我們就輸出val+1,break 這其中查詢一個區間內小於等於某數的和可以用主席樹來實現 可以看出,at增長很快,是log級別的… 然後我不會證複雜度…