随笔分类 - ICPC
摘要:在图论中,不同类型的图(无向图和有向图)需要使用不同的算法和数据结构来处理它们的特性和问题。这里我们将讨论如何使用并查集来解决无向图的连通性问题,以及如何使用深度优先搜索(DFS)、广度优先搜索(BFS)和拓扑排序来解决有向图中的依赖性问题。 无向图的连通性:并查集 对于无向图的连通性问题,并查集(
阅读全文
摘要:题源 解法1 DFS 思路:最先被放入栈中的节点是在拓扑排序中最后面的节点 一开始用了DFS,但是出现了问题 DFS函数在正确处理循环检测方面存在问题: 循环检测逻辑问题:在您的DFS中,您检查一个课程是否已被访问,如果已被访问,则立即将 valid 设置为 False。这种方式并没有正确区分处于当
阅读全文
摘要:题源 狄克斯特拉 【待完成】 class Solution: def networkDelayTime(self, times: List[List[int]], n: int, k: int) -> int: g = [[float('inf')] * n for _ in range(n)] f
阅读全文
摘要:地图中的最高点 多源广搜的重点:确保能正确判断两个源点发生交会 判断二分图 DFS的trick:Python3 用nonlocal关键字修饰flag,可以标记是否为有效二分图 用all来判断 Python中数组的浅拷贝和深拷贝: 在Python中,数组的拷贝操作可以分为浅拷贝和深拷贝两种方式: 浅拷
阅读全文
摘要:题源 非常神奇的动态规划,不要一直尝试枚举所有的乘积,或者卡在primes数组中 定义数组 dp,其中 \(dp[i]\) 表示第 \(i\) 个超级丑数,第 \(n\) 个超级丑数即为 \(dp[n]\)。 由于最小的超级丑数是 1,因此 \(dp[1]=1\)。 如何得到其余的超级丑数呢?创建与
阅读全文
摘要:题源 不要太激动,过拟合,一上来就开dp,这道题只用一个变量就可以记录前缀和了 【转载】我觉得这道题目的思想是: 走完这一生 如果我和你在一起会变得更好,那我们就在一起,否则我就丢下你。 我回顾我最光辉的时刻就是和不同人在一起,变得更好的最长连续时刻 class Solution: def maxS
阅读全文
摘要:题源 思路和算法 如果我们用 fmax(i) 来表示以第 i 个元素结尾的乘积最大子数组的乘积,a 表示输入参数 nums,那么根据「53. 最大子序和」的经验,我们很容易推导出这样的状态转移方程: fmax(i) = max{f(i-1)×a[i], a[i]} 它表示以第 i 个元素结尾的乘积最
阅读全文
摘要:题源 出现的问题: 没有正确地理解和应用DP思想,一开始想着转移dp[i-1][j-1]的方法是扫描dp[i-1][j-1]到dp[i][j]中间所有多出来的矩阵格子,但是这样时间效率太差,而且还容易写错 没有正确地转移,只考虑了dp[i-1][j-1]到dp[i][j],没有考虑dp[i-1][j
阅读全文
摘要:题源 -之前都是数组存,然后转移状态,这次是直接四个变量,非常神奇 -在该问题中,定义了五种状态,分别是:未进行过任何操作、只进行过一次买操作、进行了一次买操作和一次卖操作(完成了一笔交易)、在完成了一笔交易的前提下进行了第二次买操作以及完成了全部两笔交易。 -然后,通过状态转移方程计算第i天结束后
阅读全文
摘要:https://leetcode.cn/problems/edit-distance/description/?envType=study-plan-v2&envId=top-interview-150 非常难的一种考虑方式,感觉体现了对动态规划的深层理解,就是一定要一步一步来,要研究哪个是子问题。
阅读全文
摘要:https://leetcode.cn/problems/rotting-oranges/description/?envType=study-plan-v2&envId=top-100-liked 从一个点向上下左右移动并且判断是否边界可以用 for dx, dy in [(1, 0), (-1,
阅读全文
摘要:https://leetcode.cn/problems/interleaving-string/description/?envType=study-plan-v2&envId=top-interview-150 以下是通过动态规划解决该问题的正确方法。首先,如果字符串 s1 和 s2 的长度之和
阅读全文
摘要:https://leetcode.cn/problems/unique-paths-ii/description/?envType=study-plan-v2&envId=top-interview-150 思路很简单,让obstacleGrid[i][j]代表走到i, j所需要的步数,然后obst
阅读全文
摘要:题源:IOI飞入寻常百姓家 class Solution: def minimumTotal(self, triangle: List[List[int]]) -> int: n = len(triangle) dp = [[0] * (i + 1) for i in range(n)] dp[0]
阅读全文
摘要:https://leetcode.cn/problems/longest-increasing-subsequence/?envType=study-plan-v2&envId=top-interview-150 class Solution: def lengthOfLIS(self, nums:
阅读全文
摘要:https://leetcode.cn/problems/coin-change/description/?envType=study-plan-v2&envId=top-interview-150 class Solution: def coinChange(self, coins: List[i
阅读全文
摘要:https://leetcode.cn/problems/word-break/description/?envType=study-plan-v2&envId=top-interview-150 class Solution: def wordBreak(self, s: str, wordDic
阅读全文
摘要:https://codeforces.com/gym/104857/problem/E 本来想卡常,后来发现O(m2n2)怎么看都感觉不太对劲哈哈哈哈 所以查了一下,发现曼哈顿距离可以用距离贡献度来看 前缀和计算曼哈顿距离 xi右侧的坐标数量为n-i,那么这些坐标与xi的距离之和为:右侧坐标的累加和
阅读全文
摘要:找到个很好的二分图的定义: https://oi-wiki.org/graph/bi-graph/ 二分图判定方法 `` 昨天还不会图的上色,今天comp2121就学了图的上色,太巧了
阅读全文
摘要:今天和ssy吃饭,他和我说拉美赛区题目质量不一定好,所以开始做icpc2023 合肥题目 https://codeforces.com/gym/104857/problem/F 这是他当时写的签到题,用Boyer-Moor投票法可以很轻松地搞定,但是他建议我用朴实的方法,因为空间不重要 学会了使用f
阅读全文