摘要: 原题传送门 Solution 1 考虑 \(O(nq)\) 的解法。 性质 \(1\):选择长度恰好等于 \(k\) 的区间 \(Lca\) 一定最优。 证明:新加入一个点,\(dep_{lca}\) 不增,证毕。 所以对于每次询问,可以枚举左端点,就可以同时固定右端点。使用 \(st\) 表可以维 阅读全文
posted @ 2025-05-25 20:59 ask_silently 阅读(41) 评论(0) 推荐(0)
摘要: 适用范围 整体二分是一种离线算法,当询问数较多但均具有单调性(即 \(x\) 合法则 \([1,x]\) 或 \([x,n]\) 均合法)时,设判断 \(x\) 是否合法的时间复杂度为 \(p\),则在不考虑预处理的情况下,所有询问能做到 \(O(q \log n \times p)\),一般 \( 阅读全文
posted @ 2025-05-18 17:23 ask_silently 阅读(84) 评论(0) 推荐(0)
摘要: 题目传送门 思路分析 为简便描述,下文中 \(s1\) 是第一个字符串,\(s2\) 是第二个字符串。 发现我们需要替换相同句子部分,所以我们必须知道哪几个位置相同,于是就想到哈希来判断。先求出 \(s2\) 的哈希值,然后再逐位求 \(s1\) 中每 \(|s2|\) 个长度的字符串的哈希值,可以 阅读全文
posted @ 2025-03-29 10:54 ask_silently 阅读(26) 评论(0) 推荐(0)
摘要: 题目传送门 思路分析 这道题的一维弱化版是 P4391,没有做过的可以先做弱化版。我们发现这道题只是弱化版的二维模式,所以我们可以先将每一行作为主体,对列做一个 KMP 或者 Hash,求出最短循环节;然后将每一列作为主体,对行做一个 KMP 或者 Hash,最后将两个值相乘就可以得到答案。 AcC 阅读全文
posted @ 2025-03-29 10:52 ask_silently 阅读(12) 评论(0) 推荐(0)
摘要: 适用范围 当一张图边数较多且建边的对象是区间时,可以使用线段树优化建图。 例题 CF786B Legacy 首先将方案转化为在图上建边,将方案的价值转化为边权。则问题变为有 \(q\) 次操作,每次操作可以从点向区间的点连边,或从区间向点连边,或点向点连边,求 \(s\) 点到所有点的最短路。 发现 阅读全文
posted @ 2025-03-29 10:50 ask_silently 阅读(126) 评论(0) 推荐(0)
摘要: 题目传送门 题目大意 给定一个序列 \(a\),每次询问一段区间 \(l\) 至 \(r\),可以进行 \(0\) 至 \(t\) 次操作,每次选定一个区间将其所有数 \(+1\)。给出最终序列所有数乘积之和,对 \(10007\) 取模。 思路分析 可以先考虑暴力 \(O(nq)\) 如何做。假设 阅读全文
posted @ 2025-03-27 21:53 ask_silently 阅读(12) 评论(0) 推荐(0)
摘要: 思路分析 设 \(dp_{i,j}\) 为选择第 \(j\) 个至第 \(i\) 个连续舞台的最大收益。分类讨论一下。 对于 \(j<i\) 的情况,我们考虑 \(dp_{i,j}\) 比 \(dp_{i-1,j}\) 的答案多了什么。发现其实是多了所有演出中 \(r_k=i\) 且 \(j \le 阅读全文
posted @ 2025-03-27 10:10 ask_silently 阅读(9) 评论(0) 推荐(0)
摘要: 思路分析 考虑先求出 \(b_i\),枚举每个 \(i\) 与 \(a_i\) 来求出 \(b_i\)。发现当前的 \(b_i\) 会对答案造成多次贡献,考虑求出造成多少贡献,原本的 \(n\) 个元素分为 \(m\) 组被转化为 \(n-a_i\) 个元素被分为 \(m-1\) 组有多少方案,可以 阅读全文
posted @ 2025-03-27 10:09 ask_silently 阅读(3) 评论(0) 推荐(0)
摘要: 思路分析 我们可以先手玩一下选一次,选两次和选三次的情况。 设第一次选择了 \(x\),则 \(a_{n+1}=a_x \oplus a_{x+1} \oplus \dots \oplus a_n\)。 设第二次选择了 \(y\),分类讨论一下。 假如 \(y<x\),则 \(a_{n+2}=a_y 阅读全文
posted @ 2025-03-27 10:09 ask_silently 阅读(5) 评论(0) 推荐(0)
摘要: 斐波那契数列满足: \[F_1=F_2=1,F_n=F_{n-1}+F_{n-2}(n \ge 3) \]我们想要求证: \[\gcd(F_n,F_m)=F_{\gcd(n,m)} \]在此之前,我们先要了解三个定理 定理一:如果 \(n \mid m\),则有\(F_n \mid F_m (n<m 阅读全文
posted @ 2025-03-27 10:08 ask_silently 阅读(48) 评论(0) 推荐(0)