LGP6144口胡
阿新 • • 發佈:2022-03-03
衝了50分鐘外加10分鐘廁所才衝出來,請問我還有救嗎。
還是考慮像弱化版那樣按照左端點排序,並且記錄答案的 \(0\sim k\) 次冪和。
然後考慮新增的貢獻。仍然是右端點不超過自身構成的貢獻。但是我們將這部分寫成一個集合 \(|S|\),我們在這裡約定後面列舉的 \(x\) 都屬於這個 \(|S|\)。那麼貢獻就是 \(\sum(x+1)^k=\sum_{i=0}^k\binom{k}{i}\sum x^k\)。
這一部分很平凡,但是我們應該怎麼維護貢獻呢。。。
我們只要把這一部分線段拉出來做一遍原問題不就好了
考慮將這些線段丟到一個序列上,按照左端點排序。(別忘了右端點是不超過某個值的)
假設對於第 \(i\)
然後是加入一條新的線段。
首先先把這條線段的貢獻直接丟到序列上。
這條線段的貢獻是不是“右端點不大於最外層列舉線段左端點且不大於自身左端點的線段”構成個集合的貢獻?
看一眼,好像就是最外層問題的貢獻啊?直接插進來。
對於自身對其他線段的貢獻,找到右端點,然後在序列上二分出一個字尾,滿足這些字尾的左端點都比加入的新線段大。
然後讓這個字尾的貢獻全部加上“自身貢獻+1”就行了。
分母的 \(2\) 的冪,每次再把字尾乘上 \(2\)
然後怎麼把這些線段放到正確的位置上,只需對右端點排序就行了。
複雜度 \(O(k^2n+kn\log n)\),可以通過。