zoukankan      html  css  js  c++  java
  • 【考试总结2021-02-15】 串题

    生成膜咒

    题里面的定义就是 (border),求所有子串的每个前缀的 (border) 的和,深度就是 (border) 的个数

    考虑添加一个字符对答案的贡献就是它对应的每个后缀的 (border) 的个数

    转到 (SAM) 上发现如果当前 (endpos) 集合的大小大于 (1) 那么对答案就有 ((len_x-len_{fa[x]}) imes (sz[x]-1))

    离线搞出来后缀树,树剖线段树进行链加和查询增量即可

    在线就是 (LCT),复杂度还少 (log)

    simulate

    这题主要是考虑每个点的减少带来的连锁反应,具体而言,设当前点为 (i)([1,i-1]) 的所有数已经小于 (2),同时用栈来维护所有 (0) 的位置

    分两种情况

    • (a[i-1]=0):对应将这个点减少 (1),栈顶弹掉,(a_{i+1}) 增加 (1)

    • (a[i-1] eq 1):手玩一下发现情况是 (st[top]) 右移,(a_{i+1}) 增加 (1)(a[i]) 减少 (1)

    所以模拟即可,真的不超过联赛难度吧,没做出来真的不应该吧

    circle

    首先如果钦定的 (k) 个点有环,那么直接 (impossible)

    有一个结论:强连通竞赛图必然存在不小于 (3) 元环,归纳可以证

    那么需要删掉所有的三元环,(60') 的暴力就是 (Theta(n^3)) 找环

    考虑图上三元环的构成,合法的只能是两个被钦定或者一个被钦定(三个钦定的就不是 (DAG) 了,三个没有被钦定的无环是题设)

    一个没有被钦定的直接删掉,最后需要考虑的就是两个被钦定的删哪个

    设不被钦定点 (x) 向被钦定点连边的序列 (S)(S_i) 表示 (x) 向被钦定点中拓扑序为 (i) 连边的方向,(A) 表示指向,(B) 表示被指向

    如果有 (B)(A) 后面出现,那么这个点必删

    考虑剩下的点的 (B)(A) 的分界线位置,共存问题就被转化成了二维偏序

    时间复杂度 (Theta(n^2))

  • 相关阅读:
    C++ 中的深入浅拷贝和深拷贝
    C++ 引用小问题
    6-10
    6-8
    6-7
    6-4
    6-3
    6-1
    5-31
    COMException 依赖服务或组无法启动(0x8007042C)处理办法
  • 原文地址:https://www.cnblogs.com/yspm/p/14404092.html
Copyright © 2011-2022 走看看