上一页 1 2 3 4 5 6 7 8 9 ··· 18 下一页
摘要: 题目要求在 $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 阅读(18) 评论(0) 推荐(0)
摘要: 题目要求判断是否存在一种无向图定向方案,使得 $q$ 个点对 $(s_i,t_i)$ 都能互相到达。解法首先通过边双缩点将图转化为树结构,因为边双内部总能定向成强连通分量。对于不在同一边双的点对,使用树上差分标记路径方向,最后检查是否存在冲突。时间复杂度为 $O(n \log n)$ ,主要来自求 LCA 操作。核心思路是利用边双性质简化问题,再通过树上差分验证方向约束的可行性。 阅读全文
posted @ 2025-07-30 19:38 wing_heart 阅读(22) 评论(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 阅读(53) 评论(0) 推荐(0)
摘要: 本文研究一个 $ n \times n $ 网格问题,其中第 $ i $ 行第 $ p_i $ 列有一个权值为 $ w_i $ 的棋子,$ p $ 为排列。要求对所有 $ (x,y) $ 求从 $ (1,1) $ 到 $ (x,y) $ 所围矩形内的最大权值和。通过 CDQ 分治优化,交替沿行/列方向分割网格:分割后维护状态 $ g_{l,r} $ 表示矩形与中轴线相交于第 $ [l,r] $ 列,并借助线段树进行动态维护。行分割时按列扫描,列分割时按行扫描,利用线段树高效处理前缀/后缀修改和全局查询。该算法实现复杂度为 $ O(n^2 \log n) $,但代码实现较为复杂。 阅读全文
posted @ 2025-07-26 16:56 wing_heart 阅读(0) 评论(0) 推荐(0)
摘要: 本文求解有向图删边后存在环的方案数。正难则反,转化为总方案数 $2^m$ 减去形成 DAG 的方案数。使用状压 DP 和容斥原理:设 $f[S]$ 为点集 $S$ 构成 DAG 的方案数,转移方程为 $$ f[S] = \sum_{\emptyset \neq T \subseteq S} (-1)^{|T|-1} \cdot f[S \backslash T] \cdot 2^{\text{edges}(T \to S \backslash T)} $$ 其中 $\text{edges}(T \to S \backslash T)$ 为 $T$ 到 $S \backslash T$ 的边数。预处理点集间边数,时间复杂度 $O(3^n)$,空间 $O(n \cdot 2^n)$。最终答案 $ \text{ans} = (2^m - f[2^n-1]) \bmod 10^9+7 $。 阅读全文
posted @ 2025-07-25 19:38 wing_heart 阅读(0) 评论(0) 推荐(0)
摘要: 在树上修管道覆盖所有边,每条边需恰好被两个管道覆盖。方案价值定义为若有 $c$ 个相同管道被修两次,则价值为 $2^{-c}$,求所有方案价值和模 $10^9+7$。通过转换问题,将树边视为有标号边,计算每个点的成组方案数。设 $f[d][state]$ 表示度数为 $d$ 时状态(0、1、2 分别表示成对组数量)的方案数。转移方程基于动态规划: $f[i][0] = f[i-1][1] + 2(i-1) \cdot f[i-2][2]$ , $f[i][1] = f[i][0] + 2i \cdot f[i-1][1]$ , $f[i][2] = f[i][0] + f[i][1] + 2i \cdot f[i-1][2]$ 。最终答案为所有节点 $f[\text{du}[i]][0]$ 的乘积除以 $2^{n-1}$ ,时间复杂度 $O(n)$ 。 阅读全文
posted @ 2025-07-24 15:48 wing_heart 阅读(1) 评论(0) 推荐(0)
摘要: 题目研究了一个长度为 $n$ 的 01 串 $S$ 的变换规律,定义变换 $S' = f(S)$ 为:当 $i \leq 2$ 时 $s'_i = s_i$;当 $i \geq 3$ 且 $s_{i-2} = 0$ 时 $s'_i = s_i$;当 $i \geq 3$ 且 $s_{i-2} = 1$ 时 $s'_i = s_{i-1}$。给定 $Q$ 次区间反转操作,每次操作后询问需要多少次变换才能使 $S' = S$。通过分析发现,变换的关键在于 `110` 和 `101` 两种模式,其中 `110` 会引发连锁反应,而 `101` 则不会。使用线段树维护区间信息,包括左右边界、`110` 和 `001` 的位置以及是否存在 `101` 或 `010`,从而高效处理区间修改和查询。最终算法的时间复杂度为 $O(n + q \log n)$,适用于 $n, q \leq 4 \times 10^5$ 的大规模数据。 阅读全文
posted @ 2025-07-21 18:27 wing_heart 阅读(53) 评论(0) 推荐(0)
摘要: 给定 $2m+1$ 种重量为 $w_i \in \{-m,...,m\}$ 的物品(数量 $a_i \leq 10^{12}$),要求选择最大数量的物品使其总重恰好为 $l$($|l| \leq 10^{18}$)。解法:首先贪心地选取所有物品得到总重 $W$,通过优先丢弃大/小重量物品将 $W$ 调整至区间 $[l-m, l]$;然后对剩余差值 $d = l - W$($|d| \leq m$)进行多重背包计算,将物品增减视为新物品($w \in [-m, m]$, $v = \pm 1$),使用单调队列优化实现 $O(m^3)$ 复杂度。若无解则输出 $\texttt{impossible}$,否则最优解为初始数量 $S$ 加上背包计算结果。 阅读全文
posted @ 2025-06-16 15:48 wing_heart 阅读(34) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2025-06-02 14:52 wing_heart 阅读(41) 评论(0) 推荐(0)
摘要: 给定排列 $P$ 的长度 $n$ 和限制 $lim$,计算满足 $fun(P) \geq lim$ 的排列数量,其中 $fun(P)$ 表示以第一个元素为哨兵进行快速排序所需的单位时间。解法采用动态规划结合多项式插值:定义 $f_{a,b}$ 为长度为 $a$ 且 $fun(P)=b$ 的排列数,通过卷积形式优化转移后,利用拉格朗日插值在 $O(n^4)$ 时间内计算多项式系数,最后统计次数 $\geq lim$ 的项之和。核心步骤包括预处理组合数、计算点值、构造插值多项式,并使用模数 $10^9+7$ 处理大数运算。 阅读全文
posted @ 2025-05-31 16:47 wing_heart 阅读(46) 评论(0) 推荐(0)
摘要: 概率论 参考资料 OI-Wiki 概率基础知识 普通概率基础 \(P(A)\) 表示事件集合 \(A\) 发生的概率。 \(P(A+B)\) 表示事件集合 $A \cup B $ 发生的概率(即 \(A\) 或 \(B\) 发生) \(P(A-B)\) 表示事件集合 \(A\) 发生,事件 \(B\ 阅读全文
posted @ 2025-05-14 15:22 wing_heart 阅读(84) 评论(0) 推荐(0)
摘要: 多练。 阅读全文
posted @ 2025-04-26 14:38 wing_heart 阅读(109) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 ··· 18 下一页