[CESC] Maximum Building II 簡單題解
阿新 • • 發佈:2021-10-29
如果我能夠繼續等待,如果時間能夠停留下來,如果…沒有如果?
個位置進行了修改,那就很舒服了,直接 \(nm\) 暴力差分修改。
上午才做了,下午被神仙問的時候說的一點都不清楚,但現在清楚多了,還是記一記,說個大概思路,畢竟網上連題解都沒有。
考慮先對於每一個點求出以他為矩形左上角的矩形,不觸碰障礙物。
然後考慮對於每一個進行考慮,你考慮每次以這個矩形的左邊開始,往下選出的矩形,然後矩形裡每個地方都可以有一個貢獻,相當於會給這些 +1 。
然後容易發現,考慮只要第 \(i\) 列可以,那麼第 \(i-1\) 列也可以。
那麼就直接考慮最後一列,然後在這上面不斷加,容易發現這東西是一個不斷往上加層的覆蓋,區間 + 1, 等價於是一個差分,然後做 \(n\) 次差分,複雜度為 \(n^3\) 的。
然後考慮將差分再差分之後,發現只有 \(4\)
最後做兩次列裡的字首和,然後就將兩次差分變成了答案。
然後在橫著做一個字尾和,然後就求出答案了。
程式碼由於博主在睡大覺,於是後面再放,也可以直接私信博主催放。