zoukankan      html  css  js  c++  java
  • [HNOI2019]JOJO

    [HNOI2019] JOJO

    传送门

    Luogu

    Solution

    这题真的难(.
    首先考虑没有(2)限制的子问题:
    将原串变成((x,c))二元组形成的串,考虑一个前缀和一个后缀的匹配,中间的字符都要配上,然后首尾只要求字符相同.

    • 考虑如果中间有一个((x',c) (x'>x))(nxt)位置造成的影响显然是直接归(0),因为你无论怎样无法比这个((x',c))串长.

    然后直接跳(next)就可以了,每一次增加的是一个等差数列.

    如果有了(2)的限制,显然是可以放到树上去做.
    但由于(kmp)的复杂度是均摊的,所以无法保证上树的复杂度.
    考虑维护(kmp)自动机,现在你一个字符变成了((x,c)),可以对于每一个(c)把对应(x)(kmp)自动机建出来,维护需要跳到的(next)位置和增加的答案.
    上述操作可以通过主席树维护.
    可能我也讲的不是很清楚.

    代码

    Code

  • 相关阅读:
    鸡哥的限币令(有上下限的网络流/费用流问题)
    AtCoder Regular Contest 128 部分题题解
    一道题
    2021CCPC河南省赛
    10.26训练赛
    博弈论和SG函数
    10.24训练赛
    10.22训练赛
    CF #749
    atcoder ABC233
  • 原文地址:https://www.cnblogs.com/fexuile/p/12355002.html
Copyright © 2011-2022 走看看