bzoj-2957 楼房重建
生活随笔
收集整理的這篇文章主要介紹了
bzoj-2957 楼房重建
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
數軸上有n個樓,分別在1~n這些點上;
m次查詢。每次改變一個樓的高度,問從(0,0)這個點能夠看到多少樓;
題解:
對于一個樓來說要想看到這個樓。那么前面的樓的斜率一定比這個樓小;
那么考慮分塊的話。就將塊中樓的斜率都求出來。
然后維護出一個從塊首元素開始的遞增序列;
即包含塊首元素的下標最小的序列;
掃一遍全部塊。取該塊之前的全部樓的最大斜率為ma;
在當前塊中二分找比ma大的元素個數。并更新ma。
復雜度O(m*√n*log(√n)),時間基本和1s擦邊;
可是BZ算的總時限全部能夠無壓力AC。
代碼:
轉載于:https://www.cnblogs.com/zfyouxi/p/5390140.html
總結
以上是生活随笔為你收集整理的bzoj-2957 楼房重建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【BZOJ-3156】防御准备
- 下一篇: 输出重定向