0
点赞
收藏
分享

微信扫一扫

【NOIP模拟】 20/02/13

兮城 2022-07-12 阅读 30

【NOIP模拟】 20/02/13_后缀

  • 线段树维护区间【NOIP模拟】 20/02/13_回文串_02个数即可
    【NOIP模拟】 20/02/13_后缀_03为啥【NOIP模拟】 20/02/13_复杂度_04只有【NOIP模拟】 20/02/13_后缀_05而且还开【NOIP模拟】 20/02/13_回文串_06,而且中间不用取模用【NOIP模拟】 20/02/13_后缀_07,所以至少【NOIP模拟】 20/02/13_回文串_08吧(雾),​​【NOIP模拟】 20/02/13_复杂度_09

【NOIP模拟】 20/02/13_复杂度_10

  • 按深度建主席树,​【NOIP模拟】 20/02/13_复杂度_09

【NOIP模拟】 20/02/13_后缀_12

  • 蛮有意思的,考场肝了【NOIP模拟】 20/02/13_后缀_13 还好写出来了
    我们考虑枚举回文串的中间点,一定是在一个串中,且在这个串中,一个端点要和它形成一个回文串
    把原本就是回文串的特判掉(Infinity),那么我们钦定这个中间点后就有一个前缀或是后缀需要我们用其它串匹配,假如现在需要找一个串匹配我们的后缀,【NOIP模拟】 20/02/13_回文串_14 很小,我们暴力枚举每一个串与之匹配
  • 那么我们可以分类讨论:
  1. 当前串的后缀包涵把后缀反过来的串,那么这种情况可以转换为我们需要匹配一个前缀
  2. 当前串被后缀反过来的串完全包涵,那么这种情况可以转换为匹配一个更短的后缀
  3. 当前串与后缀反过来相同,那么这种情况可以拼成一个回文串(Infinity)
  4. 当前串的后缀与后缀反过来的前缀相同,这种情况把自己封死不能继续匹配,但有一个相同部分长度的贡献
  • 暴力搜索显然不行,然后发现不管前面怎么匹配的,当前需要匹配的后缀一定,到末尾的最大长度是一定的,于是可以【NOIP模拟】 20/02/13_后缀_15【NOIP模拟】 20/02/13_回文串_16 表示需要匹配第 【NOIP模拟】 20/02/13_回文串_17 个串第 【NOIP模拟】 20/02/13_复杂度_18 个位置的前缀或是后缀,到匹配完毕的最大长度,那么这样的复杂度是 【NOIP模拟】 20/02/13_回文串_19
  • 脑子有些糊涂写了【NOIP模拟】 20/02/13_回文串_20,但发现居然要求类似 【NOIP模拟】 20/02/13_回文串_21 的东西,那不是白给自己套一个 【NOIP模拟】 20/02/13_后缀_22 吗,于是改成后缀数组,把所有串正反拼起来做一遍就可以了,这里的复杂度是 【NOIP模拟】 20/02/13_后缀_23
    然后找到合法的中间点(它所在的回文串顶到端点)可以用 【NOIP模拟】 20/02/13_复杂度_24 预处理,顺便把在一个串中的回文串的答案求了
  • 十分好写,只有 150 排​【NOIP模拟】 20/02/13_后缀_25


举报

相关推荐

0 条评论