摘要: Statement 给串 \(t\),定义 \(B(s)\) 为 \(s\) 删一些字符后能出现最多多少个 bessie,\(A(t)\) 表示对 \(t\) 的所有子串 \(s\) 求 \(B(s)\) 的和,有 \(q\) 次单点修改,每次改完输出 \(B(s)\). Solution 动态 d 阅读全文
posted @ 2024-09-22 21:47 Laijinyi 阅读(46) 评论(0) 推荐(0)
摘要: Statement 树,每个点有一个颜色,初始每个点颜色互不相同 到根链涂上新颜色 链颜色数 \(u\) 子树内点 \(v\) 到根路径的最多颜色数 Solution 首先,相同颜色的点一定构成一条从下往上的链 考虑 LCT,维护一个性质:一条实链的点的颜色相同. 于是 \(u\) 到根的颜色数 \ 阅读全文
posted @ 2024-09-22 21:47 Laijinyi 阅读(14) 评论(0) 推荐(0)
摘要: Statement 给出 \(k,p,L\),数序列 \(a\),满足如下条件: \(1\le a_i\le k\) \(\sum_i a_i=L\) \(\nexists i,a_i\ge p\land a_{i+1}\ge p\) 答案对 \(20201114\) 取模,\(p\le k\le 阅读全文
posted @ 2024-09-22 21:46 Laijinyi 阅读(25) 评论(0) 推荐(0)
摘要: Solution 与“区间本质不同回文子串个数”类似,但没有等差数列那样优美的性质了……下面是一个更通用的做法。 考虑移动一次右端点 \(r\),就相当于把 parent 树上一条到根链的 last endpos 设为 \(r\). 把这个看成 access 操作. 考虑用 LCT 维护 paren 阅读全文
posted @ 2024-09-22 21:46 Laijinyi 阅读(22) 评论(0) 推荐(0)
摘要: 题面稍微有一点不一样。 Statement 给 \(n\) 个物品,每个物品有价值 \(v_i\)、体积 \(w_i\)。 \(q\) 次询问,问考虑 \([L..R]\) 区间的物品,用容量为 \(m\) 的背包最多能装多少价值的物品,有多少种方案,每个物品只能被装一次。 \(n\le 2\cdo 阅读全文
posted @ 2024-09-22 21:45 Laijinyi 阅读(31) 评论(0) 推荐(0)
摘要: Solution 先离散化,记 \(f(l,r,p)\) 为覆盖了 \([l,r]\) 区间内纵坐标 \(\ge p\) 的点最少矩形个数。则: \[ f(l,r,p)=\min(f(l,r,p),f(l,mid,p)+f(mid+1,r,p)) \]\[ f(l,r,p)=\min(f(l,r,p 阅读全文
posted @ 2024-09-22 21:45 Laijinyi 阅读(26) 评论(0) 推荐(0)
摘要: Statement 问区间本质不同回文串数,强制在线,\(n\le10^5\). 其实还有个四倍经验:BZOJ 5384. Solution 1 考虑一个结论:\(s\) 的所有回文后缀按长度排序后,可以划分为 \(O(\log|s|)\) 段等差数列。 考虑离线怎么做:移动右端点 \(i\),新增 阅读全文
posted @ 2024-09-22 21:42 Laijinyi 阅读(28) 评论(0) 推荐(0)
摘要: Statement 维护一棵树,边权 \(\in\{\texttt a,\texttt b,\texttt c\}\),根为 \(1\),定义这棵树的子串为从 \(1\) 走到所有点构成的字符串的所有后缀,需要支持以下操作: 问当前树的本质不同子串数 给一个点添加一棵子树 问一个串在当前树中作为子串 阅读全文
posted @ 2024-09-22 21:41 Laijinyi 阅读(17) 评论(0) 推荐(0)
摘要: Statement 把 \(S\) 分成不超过 \(k\) 段,使每段的最大子串中的最大串最小。输出这个串。 Solution 按排名二分这个串,check 中从右往左贪心地划分,需要实现 \(O(1)\) 比较两个子串大小。 #include <bits/stdc++.h> using names 阅读全文
posted @ 2024-09-22 21:40 Laijinyi 阅读(26) 评论(0) 推荐(0)
摘要: Statement 给 \(n\) 个串,问每个串有多少子串是所有 \(n\) 个串中至少 \(k\) 个串的子串。 Solution 1 对于每个后缀,二分他最右的满足条件的前缀,这就是他贡献多少次。 设二分的 \(x\),可以二分找出 height 上左边、右边第一个 \(<\) 他的位置 同样 阅读全文
posted @ 2024-09-22 21:39 Laijinyi 阅读(22) 评论(0) 推荐(0)
摘要: Statement 给你一个字符串 \(\text{init}\),要求你支持两个操作: 在当前字符串的后面插入一个字符串; 询问字符串 \(s\) 在当前字符串中出现了几次?(作为连续子串) 你必须在线支持这些操作。 Solution extend 中 link[cur] = q,相当于 link 阅读全文
posted @ 2024-09-22 21:37 Laijinyi 阅读(15) 评论(0) 推荐(0)
摘要: Statement Q7.1.2.4,时限 4s 给一个串,定义 \(\mathrm{LCS}\) 为最长公共子串长度,\(q\) 次询问,每次给出 \(l,r\),求 \[ \operatorname{xor}_{i=1}^{r-l+1}\{i+\mathrm{LCS}(S[l,l+i-1],S[ 阅读全文
posted @ 2024-09-22 21:36 Laijinyi 阅读(14) 评论(0) 推荐(0)
摘要: Statement 给两个串 \(A,B\),其中 \(|A|,|B|\le2000\),计算: \(A\) 的最短子串,他不是 \(B\) 的子串 \(A\) 的最短子串,他不是 \(B\) 的子序列 \(A\) 的最短子序列,他不是 \(B\) 的子串 \(A\) 的最短子序列,他不是 \(B\ 阅读全文
posted @ 2024-09-22 21:34 Laijinyi 阅读(11) 评论(0) 推荐(0)
摘要: Statement 给若干串,字符集为 \(0\sim9\),这些串中每个本质不同的子串给答案贡献他代表的整数这么多,求答案模 \(10^9+7\)。 Solution 建广义 SAM,对于一个等价类 \(u\),记录一个包含该等价类的串的编号,并记录任意一个 \(\text{endpos}\) 位 阅读全文
posted @ 2024-09-22 21:33 Laijinyi 阅读(26) 评论(0) 推荐(0)
摘要: int Index(int L, int R) { return L + R | L != R; } 阅读全文
posted @ 2024-09-22 09:38 Laijinyi 阅读(24) 评论(0) 推荐(0)