上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 51 下一页
摘要: SAM 板题。 考虑对于一个点 uuu,其状态对应所有字符串的长度都在 [lenfau+1,lenu][len_{fa_u}+1, len_u][lenfau​​+1,lenu​] 间,且连续。 容易在后缀链接树上 DP 求出子串出现次数。于是我们用线段树做区间取 max⁡\maxmax,单点查询即 阅读全文
posted @ 2023-07-31 16:19 HappyBobb 阅读(18) 评论(0) 推荐(0)
摘要: 考虑后缀自动机。 显然我们可以求出自动机每个状态对应的子串集合在原串中出现次数,这是经典应用。 我们设其为 fif_ifi​,对于 fi≥2f_i \geq 2fi​≥2,将 lenilen_ileni​ 算进对答案的贡献即可。复杂度线性。 #include <iostream> #include 阅读全文
posted @ 2023-07-31 14:30 HappyBobb 阅读(28) 评论(0) 推荐(0)
摘要: 考虑建出子序列自动机,然后在上面广搜即可。因为是广搜,所以可以保证找出的是最短的符合条件的字符串。注意广搜时要判 vis。复杂度线性。 #include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #inclu 阅读全文
posted @ 2023-07-30 13:30 HappyBobb 阅读(24) 评论(0) 推荐(0)
摘要: 考虑到由于字符集只为 000 或 111,可以字符串哈希。容易发现 000 不会对哈希结果造成影响。对于一段排序,肯定是前面一段 000,后面是一段 111。前面的 000 对哈希值的贡献都为 000,只需要管后面的 111 的数量。 所以我们可以预处理 fif_ifi​ 表示有 iii 个 111 阅读全文
posted @ 2023-07-29 19:32 HappyBobb 阅读(31) 评论(0) 推荐(0)
摘要: 容易发现只与字符串中每个字符出现次数有关,与字符本身的排列无关。 对于一个字符串 SSS,能在他后面接龙的不同的出现个数的字符串最多 262626 个。又因为后面的字符串长度比 SSS 多 111,所以如果建图是有向无环的。将每个字符出现次数哈希,建图,转化为最长路,DP 即可。 #include 阅读全文
posted @ 2023-07-27 20:08 HappyBobb 阅读(23) 评论(0) 推荐(0)
摘要: 我们先要保证奖赏尽量多,其次费用尽量小。应该可以看出,是一个最小费用最大流。如何建模? 考虑拆点。 每个岛屿分成一个入点一个出点。对于有雇佣兵的岛屿,源点向这个入点连容量为 111,费用为费用的边。对于怪兽的岛屿,连这个点的入点和出点,容量为 +∞+\infty+∞,费用为打怪兽的价格。对于桥梁,连 阅读全文
posted @ 2023-07-25 20:53 HappyBobb 阅读(21) 评论(0) 推荐(0)
摘要: 考虑一个动态规划,fif_ifi​ 表示前 iii 个字符的划分方案。枚举 iii,对于 sss 前 iii 个字符的某个后缀,如果出现在字典里,就转移。形式化地,如果 s[j⋯i]s[j \cdots i]s[j⋯i] 为一个在字典的后缀,那么 fi=∑jfj−1f_i = \sum \limit 阅读全文
posted @ 2023-07-24 21:24 HappyBobb 阅读(21) 评论(0) 推荐(0)
摘要: 提供一个非常容易的做法。 还是考虑点分治,但不用莫反,也不用容斥。 考虑找出重心后深搜,找到每个点到重心的路径的点权 gcd⁡\gcdgcd。把他们全都扔到 set 里面,直接枚举 set 里面两个数就好。 这看起来很暴力,其实是个经典套路。由于 gcd⁡\gcdgcd 在 O(log⁡v)O(\l 阅读全文
posted @ 2023-07-24 16:00 HappyBobb 阅读(39) 评论(0) 推荐(0)
摘要: 如果只是求本质不同子串个数,显然的经典后缀自动机。考虑建出自动机后,相当于统计这个有向无环图上从起点开始路径个数。容易通过 DP 做到线性,具体的,令 fuf_ufu​ 表示以 uuu 开始路径数。则 fu=1+∑(u,j)∈Efjf_u = 1+\sum \limits_{(u,j) \in E} 阅读全文
posted @ 2023-07-23 22:02 HappyBobb 阅读(21) 评论(0) 推荐(0)
摘要: 看着就像点分治,但会发现和模板有些不同,多了一维。 我们还是照着模板的做法,分治求出重心,然后深搜找出每个点到重心的距离。不过我们这里要求两个,分别是长度 dud_udu​ 和边权和 pup_upu​。 考虑枚举一个点 uuu。如果这个点和另外一个点 vvv 是满足条件的,那么必有 du+dv≤ld 阅读全文
posted @ 2023-07-23 21:52 HappyBobb 阅读(25) 评论(0) 推荐(0)
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 51 下一页