[BZOJ 2957]楼房重建(THU2013集训)(线段树维护单调栈)

时间:2022-01-27 09:04:20

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2957

分析:

  根据题意,就是比较斜率大小

  只看一段区间的话,那么这段区间能看见的楼房数量就是这段区间的单调栈的大小

  那么这题就是用线段树来维护这个单调栈

  len[k]表示对于区间k来说单调栈的大小是多少

  那么自底向上maintain(k)的时候,len[k]=len[lson]+find(rson,max[lson])

  find(k,x)就是表示以数字x进去k区间,那么能走的步数是多少

  那么find(k,x)怎么求呢?

  ①如果x>max[lson],就说明左区间贡献是0,那么该答案就是find(rson,x)

  ②如果x<=max[lson],那就说明左区间是有贡献的,那么该答案就是find(lson,x)+find(rson,max[lson])

  等等,对于情况②,我们两边都要递归下去,那岂不是复杂度退化到O(n)了?

  其实我们发现这个find(rson,max[lson])是没必要递归下去的,可以提前预处理(实际上,该值等于len[k]-len[lson],因为是自底向上合并信息,所以len[k]与len[lson]已经求出来了)

  时间复杂度是O(nlog^2n)的

[BZOJ 2957]楼房重建(THU2013集训)(线段树维护单调栈)的更多相关文章

  1. &lbrack;CSP-S模拟测试&rsqb;&colon;陶陶摘苹果(线段树维护单调栈)

    题目传送门(内部题116) 输入格式 第一行两个整数$n,m$,如题 第二行有$n$个整数表示$h_1-h_n(1\leqslant h_i\leqslant 10^9)$ 接下来有$m$行,每行两个 ...

  2. 洛谷 P4198 楼房重建 线段树维护单调栈

    P4198 楼房重建 题目链接 https://www.luogu.org/problemnew/show/P4198 题目描述 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上 ...

  3. &lbrack;CSP-S模拟测试&rsqb;&colon;God Knows(线段树维护单调栈)

    题目描述 小$w$来到天堂的门口,对着天堂的大门发呆.大门上有一个二分图,左边第$i$个点连到右边第$p_i$个点.(保证$p_i$是一个排列).小$w$每次可以找左边某个对应连线尚未被移除的点$i$ ...

  4. BZOJ 2957楼房重建

    传送门 线段树 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include&lt ...

  5. 【洛谷5294】&lbrack;HNOI2019&rsqb; 序列(主席树维护单调栈&plus;二分)

    点此看题面 大致题意: 给你一个长度为\(n\)的序列\(A\),每次询问修改一个元素(只对当前询问有效),然后让你找到一个不下降序列\(B\),使得这两个序列相应位置之差的平方和最小,并输出这个最小 ...

  6. bzoj 2957&colon; 楼房重建 线段树

    2957: 楼房重建 Time Limit: 10 Sec  Memory Limit: 256 MB[Submit][Status][Discuss] Description 小A的楼房外有一大片施 ...

  7. BZOJ 2957 楼房重建 (线段树)

    题目链接  楼房重建 解题思路:我们可以把楼房的最高点的斜率计算出来.那么问题就转化成了实时查询x的个数,满足数列x的左边没有大于等于x的数. 我们可以用线段树维护 设t[i]为如果只看这个区间,可以 ...

  8. bzoj 2957&colon; 楼房重建 ——线段树

    Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...

  9. &lbrack;BZOJ 3995&rsqb; &lbrack;SDOI2015&rsqb; 道路修建 【线段树维护连通性】

    题目链接:BZOJ - 3995 题目分析 这道题..是我悲伤的回忆.. 线段树维护连通性,与 BZOJ-1018 类似,然而我省选之前并没有做过  1018,即使它在 ProblemSet 的第一页 ...

随机推荐

  1. Gulp使用入门操作十一步压缩JS

    前提需要安装nodejs 一. 全局安装Gulp npm install -g gulp 二.新建一个 gulpfile.js 文件 chapter2└── gulpfile.js 三.在 gulpf ...

  2. 024医疗项目-模块二:药品目录的导入导出-HSSF导入类的学习

    我们之前学习了怎么把数据的数据导出来保存到Excle中,这篇文章我们学习怎么Excel数据导出然后插入到数据库中. 我们先学习HSSF怎么用来导出数据. 看官方教程步骤如下: 第一步: 创建一个wor ...

  3. MongoDB性能监控

    1.mongostat 查看运行中的mongodb实例的统计信息 重要指标说明: getmore: 通常发生在结果集比较大的查询时,第一个query返回了部分结果,后续的结果是通过getmore来获取 ...

  4. &lbrack;笨木头FireFly 02&rsqb;入门篇2&lowbar;客户端发送请求,服务器处理请求

    原地址:http://www.9miao.com/question-15-53940.html 好,经过上一篇不权威的讲解,大家已经能轻易地让客户端和服务端连接起来了. 但是,仅仅是连接了,可它们俩不 ...

  5. Dividing (多重背包 搜索)

    / 第一个多重背包题目 真的不理解二进制优化 /http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?cid=10594&pid=1 ...

  6. hdu 1255 覆盖的面积&lpar;求覆盖至少两次以上的面积&rpar;

    了校赛,还有什么途径可以申请加入ACM校队?  覆盖的面积 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K ...

  7. CVE-2017-12149 JBOOS AS 6&period;X 反序列化漏洞利用

    检测目录: 返回500 一般就是存在了. 下载工具: http://scan.javasec.cn/java/JavaDeserH2HC.zip 使用方法: javac -cp .:commons-c ...

  8. SAP MM MI01事务代码里的批次确定

    SAP MM MI01事务代码里的批次确定 1 – 批次管理启用之后果 一个物料如果启用了批次管理,那么库存管理以及盘点等诸多事务里都需要在批次的层次上进行. 货物移动的时候,需要在界面上指定相关货物 ...

  9. ConstraintLayout使用

    引言 ConstraintLayout是一个ViewGroup,允许您以灵活的方式定位和调整小部件的方法,项目中的布局嵌套问题对项目性能有着不小的威胁,布局能实现扁平化的话会让软件性能得到很大的提升, ...

  10. &commat;RequestBody&comma; &commat;ResponseBody 注解详解&lpar;转&rpar;

    原文地址: https://www.cnblogs.com/qq78292959/p/3760651.html @RequestBody, @ResponseBody 注解详解(转) 引言: 接上一篇 ...