2017-Sp318-team2

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

== 流水账 ==
=== chenjb ===
=== oipotato ===

=== subconscious  ===

== 题解 == 

 * A:M对F是拆分数dp,F对M是序列dp+polya,int128打表。

 * B:每次狂赌,模拟。

 * C:每次取一个相邻逆序对交换,然后对交换的点疯狂地和其他相同数字交换,开头和结尾再加上所有相同数字互相的交换,再加点随机就过了。

 * D:lct维护lca

 * E:

 * F:质因子多的赢。

 * G:求出每个点后继最小值,值小的优先级高,优先队列贪心维护即可。

 * H:

 * I:能区分的子串一定是SAM上right集合不同的,SAM的接受态是最后一个节点的所有parent树上的祖先,问题转化为从S出发至多多少条路径不会经过相同的状态,这个前提下要求路径总长度最长,建图跑费用流,把spfa魔改成优先队列就能艹过去了,因为建图本质上是个dag。

 * J:答案显然是入度为0的点中的某个,随机序列,按先来后到染色确定点的控制区域大小,不断更新答案,最后再跑一次算出真实控制区域即可。实际上随着科技进步,bitset只会有空间问题,分块bitset也能通过。

流水账

chenjb

oipotato

subconscious

题解

  • A:M对F是拆分数dp,F对M是序列dp+polya,int128打表。
  • B:每次狂赌,模拟。
  • C:每次取一个相邻逆序对交换,然后对交换的点疯狂地和其他相同数字交换,开头和结尾再加上所有相同数字互相的交换,再加点随机就过了。
  • D:lct维护lca
  • E:
  • F:质因子多的赢。
  • G:求出每个点后继最小值,值小的优先级高,优先队列贪心维护即可。
  • H:
  • I:能区分的子串一定是SAM上right集合不同的,SAM的接受态是最后一个节点的所有parent树上的祖先,问题转化为从S出发至多多少条路径不会经过相同的状态,这个前提下要求路径总长度最长,建图跑费用流,把spfa魔改成优先队列就能艹过去了,因为建图本质上是个dag。
  • J:答案显然是入度为0的点中的某个,随机序列,按先来后到染色确定点的控制区域大小,不断更新答案,最后再跑一次算出真实控制区域即可。实际上随着科技进步,bitset只会有空间问题,分块bitset也能通过。