- 博客(5)
- 收藏
- 关注
原创 最短路计数以及 luogu P1144 题解
介绍了求解1边权图中节点1到所有点最短路条数的方法。使用Dijkstra或BFS算法时,维护一个计数数组cnt,其中cnt[i]表示到节点i的最短路数量。初始化cnt[1]=1,在松弛操作中:若发现更短路径,则重置cnt[v]=cnt[u];若路径长度相等,则累加cnt[v]+=cnt[u]。文章以洛谷P1144题为例,给出了具体实现代码,展示了如何在无向图中应用该方法,并对结果取模。
2026-02-07 11:12:05
341
原创 二分图以及二分图染色
一个二分图的顶点集可以划分为两个互不相交的子集,使得这张二分图中的每条边都连接这两个集合之间的一对点,而不会连接同一子集内的点。定义一个图 G=(V,E)G = (V, E)G=(V,E) 的顶点集 VVV 可以分成两个互不相交的子集 XXX 和 YYY,使得这张图中的每一条边 e(e∈E)e (e \in E)e(e∈E) 的两个端点都属于 XXX 和 YYY。集合 XXX 和 YYY 常称作它的两个部分,或者分别称为二分图的左部和右部。二分图示例图详见我们使用 DFS 来遍历这张图,给这张图的节点进行染
2026-02-04 11:20:16
574
原创 奇数塔问题(数塔问题强化)
本文解决了一个数塔问题,要求从顶层走到底层,路径必须终止于奇数且总和最大。采用动态规划方法,定义dp[i][j][0/1]表示到达(i,j)点时偶数/奇数的最大和。状态转移根据当前数字的奇偶性处理,初始化时将无效值设为极小值。最终答案取最后一行所有奇数状态的最大值。时间复杂度为O(n²),适用于较大规模输入。
2026-01-05 13:28:54
395
原创 算术整除(扩散性dp)
摘要:题目要求在给定整数序列的相邻数字间插入'+'或'-',使运算结果为k的倍数。使用动态规划方法,定义dp[i][j]表示前i个数能否凑出余数j。通过状态转移方程更新可能的余数值,最后检查dp[n][0]是否为真来判断是否可被k整除。算法时间复杂度为O(n*k),适用于n≤1e4的情况。
2025-09-06 00:17:29
284
原创 最长公共子序列(LCS)
本文介绍了求解两个字符串最长公共子序列(LCS)的动态规划方法。通过构建二维数组dp[i][j]表示s1前i位和s2前j位的LCS长度,采用分治思想处理两种情况:当字符匹配时,长度加1并缩小范围;否则取左边或上边的最大值。最终dp[s1.size()-1][s2.size()-1]即为所求结果。代码实现简洁高效,时间复杂度为O(nm)。
2025-09-01 22:47:09
325
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅