日记 2023.9.9:2023 syzx 秋季训练 1
\(\sum_{a_1+a_2+\cdots+a_k=n,a_i\leq B}a_i^2\leq nB\)。这是将 \(a_i^2\) 放缩成 \(a_iB\)。
- A 构造、位运算
- B 枚举、贪心、DP
- C PAM
- D AC 自动机上 DP
- E 动态 AC 自动机(根号重构)
- F 带合并 AC 自动机(ACAM 只能合并 Tire 树,Fail 指针不能动态修改,不能启发式合并,所以这题做法是线段树合并,维护 Fail 的 dfn 序或将并查集转为区间)
- G 扫描线 DP
- H 组合数推式子
- I 卷积、根号分治优化 H 题
- J 不会(反射容斥)
是练习赛,没有分。
原题:
Solved | AC/total | id | origin | name |
---|---|---|---|---|
Solved | 31 / 76 | A | Gym 104420D | Inc And Dec |
Solved | 16 / 37 | B | Gym 104420E | Max |
Solved | 11 / 33 | C | Gym 100548G | palindrome I |
Solved | 4 / 59 | D | HDU 4117 | GRE |
Solved | 7 / 34 | E | HDU 4787 | GRE Revenge |
Solved | 4 / 21 | F | Gym 104542F | DSU |
Solved | 7 / 8 | G | AtCoder arc146_e | diff1 |
Solved | 21 / 30 | H | Gym 104386F | palindrome II |
Solved | 4 / 9 | I | Gym 104386G | palindrome III |
Solved | 4 / 5 | J | LibreOJ 6738 | king |
Problem C.
一个串的本质不同回文子串不超过字符数量个。
manacher 直接往中间推找出所有回文子串,用 hash 建出回文树。最后用 hash 求出答案。
或者 PAM 求交也很容易。
Problem D.
卡空间将 ch[N][26]
换为 ch[N*5][2]
(或者 ch[N*3][3]
),将字母变成二进制插入。我们这就是将字母拆成长度为 5 的字符串,修改和查询时只在长度模 5 为 0 的地方进行操作。
Problem F.
- 二进制分组。使得每个自动机里面只有 \(2^k\) 个串,每个连通块里有 \(O(\log n)\) 个 ACAM,然后合并的时候做二进制加法。复杂度正确是考虑到每个串只会被进位合并 \(O(\log n)\) 次。时空复杂度 \(O(n|\Sigma|\log n)\)。ACAM 可以换成凸包也是一样的,前提是询问的贡献可以拆开。
- 询问离线,Kruskal 重构树变成对于字符串的区间的询问,差分后,用任意数据结构维护 fail 树,同时维护每个点 fail 树向上的贡献,然后正常匹配。
- 询问离线,Kruskal 重构树,在点上做线段树合并,询问线段树区间上这个连通块的字符串的贡献。
- 询问离线,并查集时线段树合并 fail 树,然后询问。
Problem J.
本文来自博客园,作者:caijianhong,转载请注明原文链接:https://www.cnblogs.com/caijianhong/p/17688372.html