上一页 1 2 3 4 5 6 7 8 ··· 17 下一页
摘要: 给定序列 $a_i$ 和参数 $m$ 、 $k$ ,进行 $m$ 次操作每次选 $k$ 个不同位置加 $1$ ,求所有 $p \in [1,n]$ 下前 $p$ 大数字集合的个数和。解法通过贪心分析,合法集合需满足集合内最小值 $Min$ 和最大值 $Max$ 满足 $Min + m \ge Max$ ,且集合内小于 $Max$ 的数字与 $Max$ 的差之和 $\sum_{x \in S, x < Max} (Max - x) \le m \times k$ 。使用动态规划,对序列排序后枚举 $Max$ ,利用可删除背包 DP 计数满足条件的子集方案数,时间复杂度 $O(n^4)$ ,空间复杂度 $O(n \sum a_i)$ 。 阅读全文
posted @ 2025-09-10 20:41 wing_heart 阅读(1) 评论(0) 推荐(0)
摘要: 给定无向图,边权为 $w_i$ ,重新赋权 $w'_i \in [0, w_i]$ 使得所有生成树的边权异或和相同。通过点双连通分量缩点,点双内边权必须相同:点数为奇数的点双异或和必须为 $0$ ,方案数为 $(\min w_i) + 1$ ;点数为偶数的点双异或和在 $[0, \min w_i]$ 内且方案唯一。处理修改时,使用数位 DP 和动态规划维护状态 $f_{d,0/1}$ 和 $g$ ,通过逆元处理删除操作,时间复杂度为 $O((n+q) \log V)$ ,其中 $V$ 是权值范围。 阅读全文
posted @ 2025-09-09 08:12 wing_heart 阅读(5) 评论(0) 推荐(0)
摘要: 给定一棵 $n$ 个点的树,点权为 $a_i$,求可删空连通块个数。可删空指连通块点集能通过每次删除两个点权不同的点最终删空,等价于点集大小为偶数且众数出现次数不超过点集大小的一半。解法先计算所有大小为偶数的连通块个数 $A$,再减去不可删空连通块个数 $B$(即众数出现次数超过一半的偶数大小连通块),答案为 $A - B$。使用树形 DP:dfs1 通过状态 $g[u][0/1]$ 统计子树 $u$ 中大小为偶/奇数的连通块数,得到 $A$;dfs2 针对每种颜色 $x$,设 $f[u][d]$ 表示子树 $u$ 中点权 $x$ 出现次数与半大小的差为 $d$ 的连通块数,只考虑 $d > 0$ 的情况,合并子树时使用背包优化,总复杂度为 $O(n^2)$。 阅读全文
posted @ 2025-09-07 20:54 wing_heart 阅读(11) 评论(0) 推荐(0)
摘要: 给定一棵 $n$ 个节点的树,边有权重 $w$ ,每个点有 $a_i$ 个人,需要选择两个点建设银行,使得所有人到最近银行的距离之和最小。单银行时,银行应建在树的重心,贡献可拆解到每条边,为 $w \min(size_u, S - size_u)$ ,其中 $size_u$ 是子树大小,$S$ 是总人数。对于双银行,通过枚举边将树分割成两部分,每部分独立求重心并计算贡献,利用动态规划和树的性质,结合重链剖分和倍增优化,时间复杂度为 $O(n \log n)$ 。代码实现了这一思路,通过遍历树结构求解最小距离和。 阅读全文
posted @ 2025-09-05 11:28 wing_heart 阅读(7) 评论(0) 推荐(0)
摘要: 给定序列 $ s_i $ 和参数 $ m $ ,对于每个 $ k \in [1, m] $ ,求最少和最多选择几个数字使得它们的 $ \gcd $ 等于 $ k $ 。最多选择可通过直接统计所有 $ k $ 的倍数的数字个数得到。最少选择利用答案最多为 $ 7 $ 的特性,枚举可能答案 $ cnt $ ,通过组合数 $ \binom{c}{cnt} $ 和容斥原理计算方案数 $ f_k = \binom{c}{cnt} - \sum_{d>k, k \mid d} f_d $ ,找到最小 $ cnt $ 使得 $ f_k > 0 $ 。该方法高效,时间复杂度为 $ O(7 \cdot V \log V) $ ,其中 $ V $ 是值域。 阅读全文
posted @ 2025-09-04 15:56 wing_heart 阅读(0) 评论(0) 推荐(0)
摘要: 对于序列重排问题,目标是最大化满足 $ a_i \ge a_{i-1} \land a_i \ge a_{i+1} $ 的索引 $ i $ 的数量,其中 $ a_0 = a_{n+1} = 0 $。该问题通过排序序列后,采用贪心策略:尝试将出现次数较少的数字插入到比它大的数字之间的空位中,以期增加有效索引的数量。使用线段树维护后缀空位数目,确保插入操作可行。若所有数字相同(即 $ m=1 $),需特判。该算法时间复杂度为 $ O(n \log n) $ 。 阅读全文
posted @ 2025-09-03 20:49 wing_heart 阅读(2) 评论(0) 推荐(0)
摘要: 无。 阅读全文
posted @ 2025-09-02 12:02 wing_heart 阅读(20) 评论(0) 推荐(0)
摘要: 题意:n点树,边相邻指共端点;合法DFS路径从某边出发,有未访问邻边必进,否则回溯。给k个关键边,求以此为起点的不同构有标号无向边DFS树数($n \leq 10^5$)。 思路:边重编号(树根1,边$u$是点$u$连父边,编号$\in [2,n]$)。k=1时答案$\prod_{i=1}^n (d_i-1)!$($d_i$为点度,点$i$边排序列定首边后余边自由)。k>1用容斥:关键边在同链,链上点(非端点)贡献$(d_u-2)!$,余点$(d_u-1)!$,总方案为$\prod_{i=1}^n (d_i-1)! \times \left( \prod_{i \in L} \frac{1}{d_u-1} \times (-1)^{|S|+1} \right)$($L$链点集,$S$候选根边集)。设$c_i = \frac{1}{d_u-1}$,树形DP算后半部分(带容斥),结果为DP乘$\prod_{i=1}^n (d_i-1)!$,时间线性。 阅读全文
posted @ 2025-09-02 11:42 wing_heart 阅读(85) 评论(0) 推荐(0)
摘要: 动态 DP(DDP)是解决带点权或边权修改的树上动态规划问题的方法,例如动态维护树的最大权独立集。其核心是将 DP 转移方程转化为矩阵形式,定义广义矩阵乘法 $ C_{i,j} = \max_k (A_{i,k} + B_{k,j}) $ ,该运算满足结合律。通过树链剖分将树分解为链,并用线段树维护转移矩阵的乘积。修改点权时,仅需更新该点到根路径上 $ O(\log n) $ 条链的信息,单次操作时间复杂度为 $ O(\log^2 n) $ 。采用全局平衡二叉树可优化至 $ O(\log n) $ 。 阅读全文
posted @ 2025-09-01 18:56 wing_heart 阅读(14) 评论(0) 推荐(0)
摘要: 题目要求在 $n \times m$ 网格图中从 $(0,0)$ 到 $(n,m)$ 的路径数量,其中格子基于坐标奇偶性着色,路径左上方白色减黑色格子数恰好为 $k$。解法通过斜线分组发现:前 $m$ 步的第偶数步中,选择向上贡献 $+0$ 或 $+1$,向右贡献 $-1$ 或 $0$。将前 $m$ 步统一加 $1$,转化为在偶数步内恰好有 $k$ 个向上操作的问题。推导公式:若 $n+m$ 为偶数,方案数为 $\binom{\frac{n+m}{2}}{k} \times \binom{\frac{n+m}{2}}{m-k}$ ;若为奇数,则枚举第一步方向组合计算结果。代码预处理组合数公式,处理高达 $5\times 10^5$ 次询问。 阅读全文
posted @ 2025-08-14 20:53 wing_heart 阅读(2) 评论(0) 推荐(0)
摘要: 要求计算 $\bigoplus_{a=1}^{m}\bigoplus_{b=1}^{m} \left( F(a,b) \bmod 998244353 \right)$ ,其中函数 $ F(a,b) = \sum_{i=0}^{b} \binom{b}{i} \binom{n-i}{a} $ 。给定约束 $ n \le 10^9 $, $ m \le 5000 $ ,采用 $O(m^2)$ 递推:先通过直接组合计数处理边界值 $F(1,\cdot)$ 和 $F(\cdot,1)$ ,再利用递推公式 $ F(a,b) = F(a-1,b-1) - F(a-1,b) + 2F(a,b-1) $ 计算其他状态。代码通过逆元预处理组合数并存储结果数组 $ f $ ,最终输出所有 $ f[a][b] $ 的异或值。 阅读全文
posted @ 2025-08-02 20:04 wing_heart 阅读(5) 评论(0) 推荐(0)
摘要: 题目要求判断是否存在一种无向图定向方案,使得 $q$ 个点对 $(s_i,t_i)$ 都能互相到达。解法首先通过边双缩点将图转化为树结构,因为边双内部总能定向成强连通分量。对于不在同一边双的点对,使用树上差分标记路径方向,最后检查是否存在冲突。时间复杂度为 $O(n \log n)$ ,主要来自求 LCA 操作。核心思路是利用边双性质简化问题,再通过树上差分验证方向约束的可行性。 阅读全文
posted @ 2025-07-30 19:38 wing_heart 阅读(8) 评论(0) 推荐(0)
摘要: 给定一个无向图,要求构造边染色方案,使每个点相连的蓝色边与白色边数量差不超过1。解法:添加虚点连接所有奇度点,使全图度数为偶。对每个连通块求欧拉回路(使用 $ DFS $ 算法),在回路路径上交替染色:第一条边染蓝色( $ col=1 $ ),第二条染白色( $ col=0 $ ),第三条染蓝色,依此类推。虚边不参与最终输出。可证每个实点入边与出边数量相等且染色交替,故 $ |E_{\text{blue}} - E_{\text{white}}| = 0 $;原度数为奇的点通过虚边调节后满足 $ |\Delta| \leq 1 $ 。时间复杂度为 $ O(n + m) $ 。 阅读全文
posted @ 2025-07-29 16:43 wing_heart 阅读(0) 评论(0) 推荐(0)
摘要: 给定一个有 $ n $ 个节点的树,节点 $ i $ 的颜色为 $ c_i $ 。定义一个点集 $ S $ 的价值为 $ 2^t $ ,其中 $ t $ 是包含 $ S $ 所有节点的最小连通块的颜色种类数。求所有可能点集选择方案的价值总和,结果对 $ 10^9 + 7 $ 取模。解法预处理第二类斯特林数 $ S(n,k) $ ,并定义函数 $ h(k) = \sum_{i=1}^{n-k} S(n-k,i) (i+1)! $ 。枚举颜色子集 $ T $ ,删除非 $ T $ 颜色节点形成森林,计算贡献和 $ f(T) $ 。通过子集反演求 $ g(T) = \sum_{T' \subseteq T} (-1)^{|T| - |T'|} f(T') $ 。最终答案为 $ \sum_{T} 2^{|T|} g(T) $ 。时间复杂度为 $ O(n^2 + 2^c n + 3^c) $ ,其中颜色数 $ c \leq 10 $ ,利用颜色小范围优化。 阅读全文
posted @ 2025-07-29 13:49 wing_heart 阅读(0) 评论(0) 推荐(0)
摘要: 欧拉路径。 阅读全文
posted @ 2025-07-27 20:26 wing_heart 阅读(36) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 ··· 17 下一页