数据结构篇

数据结构

队列

字符串

  • 经典trick:一个字符串中的 "01" 和 "10" 子串个数是否相同只取决于这个字符串开头和结尾的字符是否相同。
    二进制转化
  • 括号序列
    合法的括号序列:令"("=1,")"=-1
    1.和为0,左右括号数量相同
    2.所有的前缀和大于等于0
    6447. 最长的括号匹配
    Bracket Counting:结合该性质的状压

字符串哈希:模板题,必会

爪痕,强颜欢笑,并非是爱的某物:循环节很好找,从后往前枚举,然后验证,关键在对比字符串用到哈希,高效判重.

KMP:Nex数组是,前缀和后缀相同的最长长度,但前缀和后缀不能是整个子串本身。

周期:经典题,题解,另:"爪痕,强颜欢笑,并非是爱的某物",也可以使用KMP解决
寻找字符串:考察对KMP字符串nex数组的理解
E - Shift String : 循环字符串自然想着拆换成链,用KMP直接匹配

字典树

其实就是归并前缀建树的操作

AcWing 142. 前缀统计: 与模板相反的,建树末端记录次数+1,统计时枚举所有前缀,总和答案
E. Choosing The Commander:比较异或之后数大小的本质,就是二进制按位比较,用字典树加入删除,修改,获得答案

哈希

线段树/树状数组

  • 进阶模板:
  • 树状数组 2:利用差分达到区间加+k的操作,利用树状数组迅速查点
  • 线段树 2: 重点是先乘后加,加深你对laze tag的理解
  • 经典处理
    F - Clearance: 记录区间内最小值,若最小值小于查询值,继续分裂区间,同时记录区间内满足条件的值
    P1253 扶苏的问题: 双重标记的处理手法,一个覆盖标记,一个加标记,覆盖标记出现,加标记为0

  • 新定义
    线段树的应用不仅在于查询区间和,区间最小/大值,还可以其他你需要的值

  • 离线/在线处理
    这两个算法有时涉及区间反复的修改,查询...
    而查询分离线和在线,离线查询可以最后给出全部回答,在线则必须立即给一个回答,两者均有不同的技巧:

    • 离线
      离线有时可利用不同询问中,重复的信息以便高效回答:
      例题:

      1. P1972 [SDOI2009] HH的项链
        这里给定询问区间,由上述离线查询的核心思想,我们可以询问顺序排序,改成以r值从小到大的排序.由于我们只考虑种类,所以只保留尽可能靠右的不同种类的贝壳,只要在每次查询就能保证答案不重.
        类似的题:数对统计
        以上两题的详细题解
        The 2023 ICPC Asia Shenyang Regional Contest (The 2nd Universal Cup. Stage 13: Shenyang):K. Maximum Rating:维护动态前缀和,找到第一个使得负数和为0的前缀和,分别用两个树状数组维护,为了方便维护,同时发现是离线处理,可以离散化,注意对于同一个值可能有多个
    • 在线

树链剖分

基环树

posted @ 2025-09-28 17:50  归游  阅读(29)  评论(0)    收藏  举报