• 数据结构部分整理


    1.动态最大连续和(LA3938-蓝书p201)

    题意:给出一个长度为n的整数序列D,你的任务是对m个询问作出回答。对于询问(a,b),需要找到两个下标x和y,使得aleq xleq y leq b,并且D_{x}+D_{x+1}+...+D_{y}尽量大。如果有多组满足条件的x和y,x应该尽量小。如果还有多解,y应该尽量小。

    思路:线段树。每个结点维护最大连续和(max_sub)、最大前缀和(max_prefix)、最大后缀和(max_suffix),对于每个询问l,r,在线段树上查询即可。

    2.楼房重建(洛谷p4198)

    题意:有一排从左到右 n 个楼房,其中第 i 个楼房的底部位于 (i,0) 处。一开始所有楼房的高度都是 0。有一个人在 (0,0) 处看这些楼房,一个底部在 (i,0),并且高度为 h_{i}的楼房能够被看到,当且仅当从 left (0,0 
ight )left (i,h_{i} 
ight ) 的连线段不与任意一个楼房严格相交。现在一共过了 m 天,每一天都会有某一个楼房的高度发生改变,求每一天这个人能够看到多少个楼房。n,m ≤ 10^5 。

    思路:线段树。维护最长前缀递增长度和区间最大值,单次查询/修改复杂度为O(logn)

    3.序列染色

    题意:有一个长度为 n 的序列,一开始每个元素都是白色。需要支持两种操作,每种操作是下列两个之一:
    ▶ 询问第 i 个元素左边第一个白色元素的位置,或者输出不存在。
    ▶ 将区间 [l,r] 当中所有元素全部染黑。
    n,m ≤ 10^5 。

    思路:将前方的白色元素作为代表元,一段黑色区间作为一个集合,并入并查集即可。

    3.1.鬼子进村

    题意:

    县城里有n个用地道相连的房子,第i个只与第i-1和第i+1个相连。这是有m个消息依次传来

    1、消息为D x:鬼子将x号房子摧毁了,地道被堵上。

    2、消息为R :村民们将鬼子上一个摧毁的房子修复了。

    3、消息为Q x:有一名士兵被围堵在x号房子中。

    李云龙收到信息很紧张,他想知道每一个被围堵的士兵能够到达的房子有几个。

    思路:由于存在恢复操作,不能直接用并查集维护。

  • 相关阅读:
    show variables 详解
    用expect做自动应答脚本
    percona-toolkit工具检查MySQL复制一致性及修复
    Discuz论坛架构改造
    注解处理器
    ora-12514 tns 监听程序当前无法识别连接描述符中请求的服务
    内嵌Tomcat和SpringMVC的简单整合测试
    @Import导入ImportSelector实现类demo
    Mybatis-Spring项目编写测试类
    @Configuration注解作用和在Spring中的处理
  • 原文地址:https://www.cnblogs.com/zbsy-wwx/p/11680652.html
Copyright © 2020-2023  润新知