zoukankan      html  css  js  c++  java
  • 「SNOI2020」水池

    ex数据结构题

    观察操作0

    我们发现它如果会抬高水位到h的话

    周围通过长度小于h的隔板与他相连的所有水池的水位都会变成h

    容易发现这些水池的水位都<h

    观察操作1

    我们发现如果他的水位低于旁边的隔板,那么就不会对旁边的造成影响

    否则必然他跟旁边的水池的水位高度是一样的

    如果这里设这个水池的水位高度为h

    那么我们的作用范围其实就是周围通过长度小于h的隔板与他相连的所有水池

    这里跟操作0有点像

    但是效果是什么呢

    我们发现以这个点为中心的水位是单调不降的

    以向左影响为例

    假设我们当前的水池右侧的隔板高度低于右侧的水池水位

    那么这个水池的水位跟右侧是一样的

    否则这个位置的水位与右侧隔板高度一致

    容易发现这很像隔板构成的单调栈

    于是事实上就是从覆盖点向左/右侧搞两个单调栈然后每次取出栈顶作为水面高度

    于是就考虑线段树上打三种标记

    这个点被整体覆盖/向左的单调栈覆盖/向右的单调栈覆盖

    打上新的标记一定会覆盖原来的标记

    可持久化就直接主席树每次下放标记新建节点就好了

    实现比较ex需要注意大量细节

    code

  • 相关阅读:
    应用提交到安卓应用市场需要注意哪些地方?
    chromedriver 下载
    缺陷与测试报告
    需求分析与测试计划、方案
    【转】使用信号监控 Django 模型对象字段值的变化
    缓存技术
    Tomcat 代码方式启动
    枚举类型 (币种例子)
    SpringMVC 常用注解
    HttpClient 教程
  • 原文地址:https://www.cnblogs.com/deaf/p/13276500.html
Copyright © 2011-2022 走看看