摘要: 无。 阅读全文
posted @ 2025-11-03 19:53 wing_heart 阅读(4) 评论(0) 推荐(0)
摘要: 思路:一条路径能被某最小生成树覆盖,意味着路径边必选,在此情况下求最小生成树花费应等于无限制时的花费。先有$O(n^3 \alpha)$暴力,即枚举点对做最小生成树;$O(n^2 \log)$暴力则预处理各边权$w$下仅考虑$ 阅读全文
posted @ 2025-10-30 09:13 wing_heart 阅读(4) 评论(0) 推荐(1)
摘要: 题意:给定包含 `a,b,c` 的字符串,长度 $n \leq 2 \times 10^5$,求所有区间权值和,区间权值为出现次数最多字母的个数减去出现次数最少字母的个数(出现次数不为0)。思路:先统一式子,包含3种字母区间 $val_{l,r} = \frac{|c_a - c_b| + |c_b - c_c| + |c_c - c_a|}2$ ,包含2种字母区间 $val_{l,r} = |c_a - c_b|$ ,1种字母区间无贡献。为简化维护,贡献乘2去分母,枚举两个字母 $A,B$ ,对于含 $A,B$ 区间算 $2|c_A - c_B|$ ,含三种字母区间减多余贡献算 $-|c_A - c_B|$ 。枚举区间右端点 $r$ ,用 $cnt_x$ 存差值为 $x$ 的区间个数及偏移量 $tag$ 从 $r - 1$ 转移,时间复杂度为线性 。 阅读全文
posted @ 2025-10-23 09:57 wing_heart 阅读(8) 评论(0) 推荐(0)
摘要: 思路:对于超集子集相关操作,采用折半技巧。先考虑单点加、子集求和情况,设 $s_{x,y}$ 表示前10位严格是 $x$,后10位是 $y$ 的子集权值和,单点加枚举 $y$,子集求和枚举 $x$,时间复杂度 $O(q 2^{\frac n 2})$。对于子集加和超集加,分析其对子集求和的贡献,超集加贡献为 $[S \subseteq T] 2^{|T|-|S|}$,子集加贡献拆成两半 $2^{|S_1 \& T_1|} 2^{|S_2 \& T_2|}$,固定 $S_1$ 枚举 $T_2$ 计算贡献到 $f_{S_1,T_2}$,查询时固定 $T_2$ 枚举 $S_1$ 并结合另一半贡献求解,总时间复杂度 $O(q 2^{\frac n 2})$ 。 阅读全文
posted @ 2025-10-22 20:06 wing_heart 阅读(9) 评论(0) 推荐(1)
摘要: 广义串并联图 参考资料 https://www.luogu.com.cn/article/llclwny8 阅读全文
posted @ 2025-10-22 15:54 wing_heart 阅读(10) 评论(0) 推荐(0)
摘要: 题意:箱子有 $n$ 个数字($n \leq 5×10^5$,$a_i \leq 10^6$),每次抽数,得分是已抽数 $\gcd$,为 $1$ 时游戏结束,操作后可选择放回或不放回,求最优策略下期望最大、最小操作数。思路:最大期望操作数 $E_1$,每次放回,利用操作 $k$ 次 $\gcd = s$ 的概率 $p_{k,s}$ 及 $s \mid a_i$ 的个数 $c_s$ 求 $f_s$ 进而得 $E_1$;最小期望操作数 $E_2$,每次不放回,类似方法,通过 $g_s$ 求 $f_s$ 得 $E_2$ 。 阅读全文
posted @ 2025-10-21 18:53 wing_heart 阅读(11) 评论(0) 推荐(0)
摘要: 题意:对长度为 $n$($n \leq 2×10^5$ 且 $2 \nmid n$)的排列进行奇偶排序,求轮数。奇数轮对奇数位、偶数轮对偶数位,若前数大于后数则交换。思路:将排列转化为每行01串处理,求每行把后置0移到前端的轮数。设 $f_k$ 为第 $k$ 个0到正确位置轮数,$pos_k$ 为其位置,$f_k = \max(pos_k - k + [2 \nmid pos_k], f_{k - 1}+1)$ (特判 $pos_k = k$ )。只关心 $f_{cnt_0}$ ,可用线段树维护相关最大值,时间复杂度 $n \log n$ 。 阅读全文
posted @ 2025-10-19 19:59 wing_heart 阅读(7) 评论(0) 推荐(0)
摘要: 目前只有题一。 阅读全文
posted @ 2025-10-16 20:01 wing_heart 阅读(10) 评论(0) 推荐(0)
摘要: 题意:有$n$个城市、$m$个人机,初始人机在城市$a_i$ ,人机通过$2×2$矩阵以$\min +$卷积结算分数,其对ZJ评分是结算分数异或和。有$q$个在线且可持久化操作:1. $[l,r]$人机离开原城市结算并到城市$c$;2. 城市$c$人机矩阵乘矩阵$w$;3. 输出人机$x$离开ZJ的评分。$n,m,q \leq 2×10^5$。思路:无持久化时,用set维护人机状态,对各操作:操作2记录$tag$ ,操作1乘对应矩阵结算并更新段,操作3查询线段树。可持久化时,用线段树替代颜色段,操作2记录$tag$ ,操作1打标记,操作3合并操作序列,通过对每个节点维护操作序列首尾及中间贡献、利用版本树及倍增数组求城市矩阵乘积、可持久化线段树找同城市最近祖先等方法实现,时间复杂度$O(n \log^2)$ 。 阅读全文
posted @ 2025-10-15 21:45 wing_heart 阅读(4) 评论(0) 推荐(1)
摘要: 题意:给定$n$个节点树,给节点染$[0,m]$色,叶子有颜色要求$c_i$ ,求染色方案数,$n,m \leq 2×10^5$。思路:先设$f_{u,i}$为$u$子树中颜色$i$叶子未全找到对应节点的方案数,$f_{u,0}$为全找到的方案数,通过特定公式DP求解,复杂度$O(n^2)$。因仅子树有颜色$i$叶子时$f_{u,i}$非$0$,改用线段树合并,动态开点线段树维护$f$(仅非$0$部分)与$f_{u,0}$ ,空间$O(n \log m)$ ,线段树维护多种标记辅助合并 。 阅读全文
posted @ 2025-10-15 19:39 wing_heart 阅读(7) 评论(0) 推荐(0)
摘要: 题意:有 \(n\) 只虫子,第 \(i\) 只虫子想吃第 \(a_i\) 只虫子,虫子按随机排列 \(p\) 顺序行动,若 \(a_{p_i}\) 虚弱则被吃,否则 \(p_i\) 变虚弱,求被吃掉虫子的期望数量,\(n \le 500\)。思路:构建 \(i\) 到 \(a_i\) 的内向基环树森林,拆分算各虫子被吃概率。对第 \(i\) 只虫子,需满足 \(t_{a_i} < t_i\),\(\forall a_j = a_i \land t_{a_i} < t_j, t_i < t_j\) 及 \(a_i\) 行动时变虚弱。先判断前两个条件,满足则递归。设 \(f_i\) 为前 \(i\) 个点满足前两条件的方案数,用容斥原理,设 \(dp_{i,D}\) 表示考虑到链上第 \(i\) 个点,\(\sum_{j \le i} d_j = D\) 的方案数,利用插板法结合容斥系数 \((-1)^{\sum d_{i + 1}}\) 求解,对每个链头操作,时间复杂度 \(O(n^3)\)。 阅读全文
posted @ 2025-10-14 19:51 wing_heart 阅读(12) 评论(0) 推荐(1)
摘要: 题意:略。思路:利用$f_i^2 g_i = i$,考虑拆贡献算,枚举$\le \sqrt N$的质因子算$f$。对于质因子$p$,求包含$p^{2k}$的数的个数,通过求至少$2k$次的数的个数 $\lfloor \frac{N}{p^{2k}} \rfloor$ 来计算,$p$ 的总贡献为 $\prod_{p \le \sqrt N} p^{\sum_k \lfloor \frac{N}{p^{2k}} \rfloor}$,枚举$p,k$计算 $p_{2k}$ 和逆元。由于直接求$N!$时间复杂度为 $O(N)$,所以采用分段打表来解决。 阅读全文
posted @ 2025-10-12 20:42 wing_heart 阅读(6) 评论(0) 推荐(1)
摘要: 题意:给定一棵\(n\)个点的树和\(m\)个链\((u, v)\) ,需选出\(k\)个链,使得存在一个点\(x\)在这\(k\)个链中都出现,一个方案的代价是选中最长链长度减去最短链长度,求最小代价,其中\(n \le 5 \times 10^4\),\(k \le m \le 10^4\)。思路:先对树进行DFS预处理深度和父节点。将链按长度排序,用bitset存每个链包含的点,维护每个点在当前双指针区间\([l, r]\)内出现次数。遍历排序后的链,双指针移动,左指针\(l\)固定时找最小的\(r\)使\([l, r]\)内存在一个点出现\(k\)次(即存在合法方案),此时代价为\(len_r - len_l\) ,不断更新最小代价,时间复杂度\(O(nm)\) ,bitset主要用于优化空间 。 阅读全文
posted @ 2025-10-10 16:13 wing_heart 阅读(12) 评论(0) 推荐(1)
摘要: 可撤销并查集。 阅读全文
posted @ 2025-10-10 09:55 wing_heart 阅读(6) 评论(0) 推荐(0)
摘要: 题意:给定初始无边的\(n\)个点无向图及\(q\)个操作,包括连边(边权\(w\),\(0 \leq w \leq 10\))、删边和查询两点间权值最大值最小的路径权值,\(n,q \leq 10^5\)且保证无重边。思路: - **线段树分治 + 可撤销并查集**:因\(w\)小,建\(11\)个图,分别包含\(w \leq k(k \in [0,10])\)的边。对操作按时间排序后在时间轴上分治,用可撤销并查集维护区间有效边。每条边有效区间在线段树上用\(\log\)个节点表示,分治到节点时加入或撤销边。非叶子区间先加边,递归处理左右子区间,再撤销边;叶子区间若为查询则判断两点是否连通,时间复杂度\(O(Vq\log^2q)\) 。 - **LCT做法**:先离线预处理边的删除时刻,用LCT维护每个图的生成树及删边操作。添加边时,若两点已连通且新边删除时刻晚,贪心地找出两点路径上删除时间最早的边判断是否替换,复杂度\(O(Vq \log q)\) 。 阅读全文
posted @ 2025-10-10 09:43 wing_heart 阅读(12) 评论(0) 推荐(1)