上一页 1 2 3 4 5 6 7 ··· 16 下一页
摘要: 题意:给定 $n$ 个数 $a_i$($n,m \le 20$,$a_i,Y \le 10^{18}$),求 $[1,Y]$ 中满足恰好有 $m$ 个 $a_i$ 能整除 $x$ 的 $x$ 的个数。思路:利用容斥原理和二项式反演求解。设 $f_k$ 为恰好有 $k$ 个 $a_i$ 整除 $x$ 的 $x$ 的个数,$h_j$ 为所有大小为 $j$ 的子集 $S$ 对应的 $\lfloor Y / \text{lcm}(a_i, i \in S) \rfloor$ 之和。通过二项式反演,$f_m = \sum_{j \ge m} (-1)^{j - m} \binom{j}{m} h_j$。枚举所有非空子集,计算其元素的 lcm,结合子集大小和反演公式计算贡献,最终得到结果,时间复杂度为 $O(2^n n)$,可满足条件。 阅读全文
posted @ 2025-09-15 17:17 wing_heart 阅读(80) 评论(4) 推荐(0)
摘要: 题意:给定一个无向图,$n,m \le 10^4$,需对每个点黑白染色,使每条边两端点颜色不同,求对每一条边,删除该边后是否存在合法染色方案。思路:合法染色方案即删除边后图为二分图,不存在奇环。先构造 dfs 生成树,将一条非树边和其覆盖树边形成的环称为基本环,包含多个非树边的环长奇偶性等于各基本环奇偶性异或和。特判原图无环情况,树边成为答案边需满足不存在长度为奇数的不包含它的基本环,且包含它的基本环长度都为奇数,可用树上差分求解;非树边成为答案边需满足不存在其他长度为奇数的基本环,总时间复杂度为线性。 阅读全文
posted @ 2025-09-12 11:18 wing_heart 阅读(5) 评论(0) 推荐(0)
摘要: 给定序列 $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 阅读(8) 评论(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 阅读(0) 评论(0) 推荐(0)
摘要: 无。 阅读全文
posted @ 2025-09-02 12:02 wing_heart 阅读(15) 评论(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 阅读(50) 评论(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 阅读(10) 评论(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 阅读(3) 评论(0) 推荐(0)
摘要: 题目要求判断是否存在一种无向图定向方案,使得 $q$ 个点对 $(s_i,t_i)$ 都能互相到达。解法首先通过边双缩点将图转化为树结构,因为边双内部总能定向成强连通分量。对于不在同一边双的点对,使用树上差分标记路径方向,最后检查是否存在冲突。时间复杂度为 $O(n \log n)$ ,主要来自求 LCA 操作。核心思路是利用边双性质简化问题,再通过树上差分验证方向约束的可行性。 阅读全文
posted @ 2025-07-30 19:38 wing_heart 阅读(6) 评论(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)
上一页 1 2 3 4 5 6 7 ··· 16 下一页