• 专题整理


    后缀自动机:

    A: 生成魔咒

    每个节点有的串的个数就是len[i] - len[fa[i]]
    所以每次加入字符的时候顺便统计就可以了



    B: 弦论

    建出后缀自动机

    求出size表示当前节点字符串出现次数 然后对size求和 表示当前节点及其子树出现个数

    然后递归求解 如果不走当前转移边 那么k直接-=sum

    类似线段树求k大的思想



    C: 公共串

    很套路的一类问题

    设T个串 字符集大小为k 每个串长度为n

    这里给出三种做法

    第一种:
    当串的数量不多时 可以直接建出n个后缀自动机

    都从根开始跑 如果所有自动机都有当前转移边才转移

    每次转移和答案取Max

    第二种:
    以一个建出后缀自动机

    别的在上面跑

    求出每个节点作为结束 最多能有多长

    T个串每个节点互相取min

    最后统计所有节点 取max得解

    第三种:

    广义后缀自动机

    每个点记录siz 表示在哪几个串中出现

    然后上传的时候启发式合并map



    D:工艺

    把字符串复制一倍 然后直接在后缀自动机上跑

    取出字典序最小的一个 进入 接着跑就可以了



    E:差异

    发现这个式子很像树上的距离 其实也就是树上的距离

    把字符串倒过来 然后发现一个很好的性质

    就是两个点的lcp化成了 LCA的深度

    然后重点是求两点距离

    边权不是1 而是len[i] - len[fa[i]]

    按每个点统计贡献就可以了 树上DP

    size[v] * (n - size[v]) * (len[v] - len[u]) 也就是当前点的贡献



    F:品酒大会

    一个显然的性质是 k相似 那么一定也k-1相似 k-2相似

    所以可以分别求出i相似的 然后做个前缀和就可以了

    发现这里和差异很像 只是边权化成了1 直接求就可以了

    关于第二问 记录下来当前子树的Mx和Mn

    然后每次更新父亲的答案



    G:Sandy的卡片

    转化题意: 数组改成差分数组 一样跑LCS就可以了



    LCT

    A:Cave 洞穴勘测

    LCT维护联通性 动态加边删边



    B:树的维护

    记录lazy 表示修改区间

    需要注意的地方是

    pushdown的时候不能只修改自己

    所以要多向下传递一个

    否则rotate的时候会挂掉 因为pushup的时候 儿子的信息可能是错的



    C:水管局长数据加强版

    发现断边不容易处理

    所以时光倒流 改为处理加边

    发现如果加边之前 x,y不在同一联通块

    直接加边即可

    否则断掉x,y中边权最大的边 加边



    D: GERALD07加强版

    LCT套主席树

    挺好的思路

    对联通块个数有贡献的加边 充要条件是 x,y在加边前不属于同一个联通块

    所以可以预处理出所有加边

    nxt[i]记录下当前次加边 如果产生环 在环中最早的加边是什么时候

    然后对于l到r的询问

    也就是求在l到r的区间内 有多少位置的nxt的值小于l

    这些加边是有意义的

    主席树维护一下就可以了



    F:LCA

    很久之前就做过的题了

    dep[lca(x,y)]可以转化为 从x到根节点所有权值+1 求从y到根节点权值和

    然后LCT就可以随便维护了



    G:染色

    对于每个点记录lco ,rco , col, cnt

    表示区间左端点颜色 右端点颜色 本身颜色 区间颜色段个数

    pushup的时候 判断下左儿子右端点颜色 右儿子左端点颜色 以及本身颜色 处理cnt就好了

    注意pushdown的多下放一层

    如初见 与初见
  • 相关阅读:
    阶段3 2.Spring_10.Spring中事务控制_4 spring中事务控制的一组API
    阶段3 2.Spring_10.Spring中事务控制_3 作业-基于注解的AOP实现事务控制及问题分析_下
    阶段3 2.Spring_10.Spring中事务控制_2 作业-基于注解的AOP实现事务控制及问题分析_上
    程序员选择字体的标准是
    高通Audio中ASOC的codec驱动(二)
    HashTree【转】
    什么是负载均衡?【转】
    Linux RCU 机制详解
    如何使用C语言的面向对象
    高通HAL层之bmp18x.cpp
  • 原文地址:https://www.cnblogs.com/HISKrrr/p/14198555.html
Copyright © 2020-2023  润新知