ZR模拟赛3

舒适场

Time Record
8:45 T1 #1,2 (10pts)
9:45 T2 50pts
10:11 T3 15pts
10:30 T3 +17pts=32pts
12:03 T2 满分算法拍过 +50pts=100pts
12:18 T3 改写暴力 大概能 +10pts=42pts
13:01 T1 满分算法过样例 +90=100pts
没有fst!!1

A

一道数学题。通过 Cauchy 不等式能看出,或者手推找规律也可以发现 \(p_i=D^2p_{i-1}\)

http://zhengruioi.com/submission/335279

B

感觉做过类似的题。考虑建出最短路图,然后跑支配树,发现如果一个点存在一条 DAG 必经边当且仅当它 DFS 树上的祖先存在一条必经边或者自己的入度为1.

http://zhengruioi.com/submission/335100

C

赛场上想到了一个能解决 25 分的 DP 和一个能解决 17 分的 AC 自动机做法。

实际上考虑根号分治,把长度小的给塞进一个trie(25分做法),长度大的由于最多匹配根号个暴力哈希。

然而强少有个非常nb的做法可以做 \(K=10\)。发现匹配串的总和是 \(O(n)\) 的,所以发现不同的字符串长度最多只有 \(O(\sqrt n)\) 的级别,所以每次转移的不同的转移位置只有 \(O(\sqrt)\) 个。考虑建小串的AC自动机。截止到 \(i\)\(S\) 可以在 AC 自动机的一个位置上表示出自己的最长匹配后缀,我们通过跳 fail 树能获得其所有匹配子串。预处理说fail树上所有点,往上跳到的第一个代表匹配串的点事哪个,暴力跳即可。

http://zhengruioi.com/submission/335683

posted @ 2021-08-06 16:59  LarsWerner  阅读(36)  评论(0)    收藏  举报