果題。數組
求當前子彈能會使多少塊木板損壞,發現由於木板會隨着子彈數目的增長而更加容易損壞,故此詢問具備單調性。函數
然後又發現能夠離線,考慮總體二分。spa
每次用一個$solve(x,y,l,r)$表示當前處理:編號爲$x$到$y$的子彈,編號爲$l$到$r$的木板。遊戲
把這些全部子彈都扔到樹狀數組裏而後每一個木板查詢區間和看夠不夠用就行了。it
必定要記得存在木板從始至終都沒損壞的狀況因此循環退出的時候須要特判。循環
這大模擬題....絕了~im
這題就很是有意思了。統計
不難發現全部的狀況確定能經過如下方式構造出一組解:總結
每次貪心的放最大的就好了,證實顯然啊.....查詢
這樣的話就只須要判一下是否是這兩個數的和$Sum$存在一個數$n$使得$\frac{n*(n+1)}{2}=Sum$便可。
首先咱們發現要求的東西很是整齊,覺得是什麼神仙$dp$啥的。
無果..... 想多項式吧,咱們考慮能不能弄出這麼一個生成函數使得$f_i$就是這個生成函數的第$i$項。
不妨設其爲$F$。
那麼顯然的,這個生成函數就能夠被表示成: $$ F = \sum\limits_i \sum\limits_{j=1}^n a_j^ix^i $$ 考慮把$a$序列單獨枚舉: $$ F = \sum\limits_{j=1}^n \sum\limits_i a_j^ix^i $$ 不難發現,後面的這個$\sum\limits_i a_j^i x^i$能夠逆麥克勞林展開,變成$\frac{1}{1-a_jx}$。
因此原式就變成了 $$ F = \sum\limits _ {j = 1} ^ n \frac{1} {1 - a _ j x} $$ 這東西直接多項式求逆而後分治$NTT$搞一搞就行了嘛
會$T$........
而後怎麼辦呢?
原式其實等價於: $$ F = \sum\limits _ {j = 1} ^ n 1 + \frac{a _ j x} {1 - a _ j x} \ F = n - \sum\limits _ {j = 1} ^ n (ln(1 - a _ j x))' \ F = n - (\sum\limits _ {j = 1} ^ n ln(1 - a _ j x))'\ F = n - ln(\prod\limits _ {j = 1} ^ n (1 - a _ j x)) $$ 後面的東西分治起來就至關快了
而後多項式取$ln$就行了。