日记 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.

  1. 二进制分组。使得每个自动机里面只有 \(2^k\) 个串,每个连通块里有 \(O(\log n)\) 个 ACAM,然后合并的时候做二进制加法。复杂度正确是考虑到每个串只会被进位合并 \(O(\log n)\) 次。时空复杂度 \(O(n|\Sigma|\log n)\)。ACAM 可以换成凸包也是一样的,前提是询问的贡献可以拆开。
  2. 询问离线,Kruskal 重构树变成对于字符串的区间的询问,差分后,用任意数据结构维护 fail 树,同时维护每个点 fail 树向上的贡献,然后正常匹配。
  3. 询问离线,Kruskal 重构树,在点上做线段树合并,询问线段树区间上这个连通块的字符串的贡献。
  4. 询问离线,并查集时线段树合并 fail 树,然后询问。

Problem J.

https://www.cnblogs.com/caijianhong/p/solution-LOJ6738.html

posted @ 2023-11-06 15:36  caijianhong  阅读(9)  评论(0编辑  收藏  举报