摘要: DAY -1(2023.7.29) 提前一天飞到南京,坐了一坤时飞机。 本来以为南京很热,不过因为台风的原因,这边竟然比成都还凉快一内内。 下飞机做网约车,气死我了,那个司机有点聪明,停在停车场喊我们跑去找他,又不告诉我们停车场在哪,本来都想取消订单的,但要付违约金,只有忍气坐车。到了后他又不把车停 阅读全文
posted @ 2024-01-07 19:45 SunsetLake 阅读(178) 评论(1) 推荐(0) 编辑
摘要: 思路 每次询问 \(u,v\) 的简单路径上有多少个字符串以 \(s\) 为前缀,不难想到用 trie 树去维护。而普通的 trie 只能查询所有字符串中产生的答案,对于这类区间询问,就要用到可持久化 trie 树了。不会右转可持久化 trie 树模板题。 \(u,v\) 的简单路径上编号不连续,非 阅读全文
posted @ 2024-01-07 19:43 SunsetLake 阅读(13) 评论(1) 推荐(0) 编辑
摘要: 正常的 trie 树能解决一些字符串问题,\(0/1\) trie 能解决最大异或和问题。但是如果每次询问是针对一个区间的,那么普通 trie 就不好做了,此时就需要可持久化 trie 树。 类似可持久化线段树,对于每个版本新建一个 \(root\) (相当于每个前缀建),在插入时该继承的继承,改修 阅读全文
posted @ 2024-01-07 19:43 SunsetLake 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 官方题解。 思路 首先可以把 \(a\) 数组分成 \(n\) 块,每块都是长为 \(k\) 的 \(q\) 数组。于是我们可以把答案拆成两部分计算:块内的贡献和块外的贡献。对于块内,\(p_i\) 都是一样的,因此可以直接消去,计算的实际上就是 \(q\) 序列的逆序对数,把这个值 \(\time 阅读全文
posted @ 2024-01-07 19:43 SunsetLake 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 直接建边边数过多,不好处理。我们可以考虑建一些虚点,让 \(u_i\) 和 \(n+i\) 连边,\(v_i\) 和 \(n+i\) 连边。设这些新连的点为白点,与白点有连边的点在原图中一定相连,并且一定是一棵树。删除操作相当于把 \(u\) 的子白点连到他的父白点上,使用并查集维护即可。 这时再考 阅读全文
posted @ 2024-01-07 19:42 SunsetLake 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 来自机房大佬 FFT 的简单解法。 思路 首先有个结论:如果 \(a\) 中存在一个子串的和为 \(x\) (\(x>2\)),那么也就一定存在一个子串之和为 \(x-2\)。怎么证明?其实和为 \(x\) 的子串有 \(3\) 种情况: \(\text{1}\dots \text{1}\) 两边都 阅读全文
posted @ 2024-01-07 19:41 SunsetLake 阅读(12) 评论(1) 推荐(0) 编辑
摘要: 思路 判断一个字符串是否是回文串,可以从它的本质出发:正着读和倒着读是一样的。快速判断它正着和反着是否一样,用字符串哈希即可。又因为涉及单点修改,区间查询,那么使用线段树维护这两个值就行了。 这里讲一下如何 pushup。以正着的哈希值为例:我们要更新 \(p\) 这个点的 \(hash\) 值,已 阅读全文
posted @ 2024-01-07 19:39 SunsetLake 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 思路 首先最后的局面在两两字母间一定不会多于 \(1\) 个空格。考虑反证,假设有两个空格,那么有以下两种情况:\(\text{A}\_\_ \text{B}\),\(\text{A}\_\_ \text{A}\),也就是两边的字母不同,相同。对于第一种,在任意一个空格都可以填一个与他相邻字符不同的 阅读全文
posted @ 2024-01-07 19:38 SunsetLake 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 思路 如果一条路径的 \(\text {mex} = k\),那么 \(0 \sim k-1\) 这些点一定在路径中出现过,并且一定在一条链上。如果不在一条链上,那么就不满足简单路径这一条件了。因此我们在从小到大加点的过程中如果发现一个点不在已求出的链上,那么比这个点编号大的 \(k\) 答案一定都 阅读全文
posted @ 2024-01-07 19:37 SunsetLake 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 正难则反。 直接往上覆盖不好做,那么可以考虑把字符从 \(S\) 上往下删。删的过程就是在 \(S\) 中找 \(T\) 并把他们变成 #。如果 \(S\) 中有字符为 #,那我们可以把它看成任意字符,因为向上贴的过程中有重复覆盖的情况,在删的时候我们并不知道他是否重复了,所以当成任意字符来看即可( 阅读全文
posted @ 2024-01-07 19:37 SunsetLake 阅读(6) 评论(0) 推荐(0) 编辑
-->