bzoj3998: [TJOI2015]弦论

  • 传送门(http://www.lydsy.com/JudgeOnline/problem.php?id=3998)

  • description
    求一个串的第k小子串(本质相同,位置不同的T = 0算相同,T = 1算不同)

  • solution

    • T = 0时:
      sam:每一个子串对应后缀自动机上一个合法路径。
      sa:在每个子串第一次出现的后缀上统计到它,这样从前往后扫一遍就可以了。
    • T = 1时:
      sam:类似T = 0,我们可以设\(num_i\)表示从根走到\(i\)这里有多少个子串,在T = 0的时候,\(num_i = 1\),而T = 1的时候\(num_i\)就是他的right集合大小。
      sa:还是在每个子串出现的第一个后缀上统计到它,这样的话我们从后向前统计,每次\(height[i]\)后面的除了这个后缀本身的一段,还要把之前没有加的也加进来,这个可以用线段树维护。
  • notice
    这题时限卡的紧,sa是会T的。
    但是sa可以处理多次询问,不知道sam如何处理多次询问。

posted @ 2016-06-10 18:05  Showson  阅读(432)  评论(0编辑  收藏  举报