摘要: 思路 判断一个字符串是否是回文串,可以从它的本质出发:正着读和倒着读是一样的。快速判断它正着和反着是否一样,用字符串哈希即可。又因为涉及单点修改,区间查询,那么使用线段树维护这两个值就行了。 这里讲一下如何 pushup。以正着的哈希值为例:我们要更新 \(p\) 这个点的 \(hash\) 值,已 阅读全文
posted @ 2024-01-07 19:39 SunsetLake 阅读(48) 评论(0) 推荐(0)
摘要: 思路 首先最后的局面在两两字母间一定不会多于 \(1\) 个空格。考虑反证,假设有两个空格,那么有以下两种情况:\(\text{A}\_\_ \text{B}\),\(\text{A}\_\_ \text{A}\),也就是两边的字母不同,相同。对于第一种,在任意一个空格都可以填一个与他相邻字符不同的 阅读全文
posted @ 2024-01-07 19:38 SunsetLake 阅读(14) 评论(0) 推荐(0)
摘要: 思路 如果一条路径的 \(\text {mex} = k\),那么 \(0 \sim k-1\) 这些点一定在路径中出现过,并且一定在一条链上。如果不在一条链上,那么就不满足简单路径这一条件了。因此我们在从小到大加点的过程中如果发现一个点不在已求出的链上,那么比这个点编号大的 \(k\) 答案一定都 阅读全文
posted @ 2024-01-07 19:37 SunsetLake 阅读(53) 评论(0) 推荐(0)
摘要: 正难则反。 直接往上覆盖不好做,那么可以考虑把字符从 \(S\) 上往下删。删的过程就是在 \(S\) 中找 \(T\) 并把他们变成 #。如果 \(S\) 中有字符为 #,那我们可以把它看成任意字符,因为向上贴的过程中有重复覆盖的情况,在删的时候我们并不知道他是否重复了,所以当成任意字符来看即可( 阅读全文
posted @ 2024-01-07 19:37 SunsetLake 阅读(22) 评论(0) 推荐(0)
摘要: 题目 题意 给定一颗树,每个点有点权。求有多少对点对 \((x,y)\) 满足 \(x<y\) 且以 \(x\) 到 \(y\) 的简单路径上的所有点的点权作为边长,能围成一个凸多边形。 \(1 \leq n \leq 10^5\),\(1 \leq a_i \leq 10^9\)。 思路 遇到这种 阅读全文
posted @ 2024-01-07 19:37 SunsetLake 阅读(17) 评论(0) 推荐(0)
摘要: 赛时冲了两个多小时没冲出来,想得断断续续,导致没想到如何处理奇偶。 思路 根据限制条件一,可以知道最后的图一定是两个连通块,其中一块包含 \(1\),另一块包含 \(n\)。因为此时再想连边就必须连通两个块,使其不合法了。 每次操作都是新增一条边,那么到最后的边数是多少呢?假设其中一个连通块有 \( 阅读全文
posted @ 2024-01-07 19:37 SunsetLake 阅读(34) 评论(0) 推荐(0)
摘要: 题目 神奇模拟题。最直接的做法就是每个石头暴力向下滚,有 \(60\) 分。但是大样例跑了 \(15s\)。稍微观察一下,会发现很多次循环都是在重复向下走到一格空位上,于是考虑优化:用 set 维护每一列的那些位置有障碍(包括石头),每次直接 lower_bound 跳到下一个位置,会快很多,大样例 阅读全文
posted @ 2024-01-07 19:36 SunsetLake 阅读(36) 评论(0) 推荐(0)
摘要: 首先,我们需要想清楚要维护哪些信息,把每一种类型(包括基本类型)用结构体维护,里面存: 类型的对齐规则 占用长度 元素个数 每个元素的名字、起始位置、类型 元素名到编号的映射 struct node{ int dq;//对齐规则 ll sz;//长度 int num;//data numbers s 阅读全文
posted @ 2024-01-07 19:36 SunsetLake 阅读(293) 评论(0) 推荐(0)
摘要: link @LHTCFLS :https://www.luogu.com.cn/blog/436107/tarjan-xue-xi-bi-ji 强连通分量 \(low\) 为 \(x\) 最多经过一条返祖边能走到栈中的节点的最小 \(dfn\) 为多少。 \(low_x=dfn_x\) 时,对于一个 阅读全文
posted @ 2024-01-07 19:36 SunsetLake 阅读(17) 评论(0) 推荐(0)
摘要: 其实直接模拟就好了。 因为要从第一行开始依次往下删,所以从小到大枚举行,看这行删完是否合法。如果不合法了,就输出答案并结束程序。然后我们就要思考如何判断当前矩阵是否合法。 一个暴力的想法是把下面的每一列字符串都表示出来,看他们之中有没有不同的。但是这样做是 \(\mathcal{O(n^2m)}\) 阅读全文
posted @ 2024-01-07 19:35 SunsetLake 阅读(18) 评论(0) 推荐(0)
-->