摘要: 区间 DP 简单概述 前传:简单线性 DP 详解 区间动态规划是动态规划的一个分支,主要用于解决具有区间性质的问题,特别是涉及到区间的分割、合并或者区间间某种依赖关系的题目。 区间 DP 概念较好理解,实战的话主要是思考难度高一点点。 思路可以总结为八个字:枚举断点,更新区间。 在这点下,和 最短路 阅读全文
posted @ 2025-03-23 11:45 George0915 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 前传:BF 算法 BF 算法即为暴力解法,一位一位向下匹配。 时间复杂度约为 O(n×m)。 KMP KMP 算法的主要思想是利用部分匹配信息,避免重复匹配,提高字符串查找效率。 KMP 算法总时间复杂度是 O(n+m),匹配用时 O(n)m阅读全文
posted @ 2025-03-23 11:34 George0915 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 并查集 并查集是一种数据结构,用于维护一个“森林”,即可以用于反复查找某个节点的父节点或合并任意两颗树。 1. 查找父节点 初始化每个节点的父节点为其自己。 调用 find 函数时,首先特判(if (f[x] == x))检查需要 find 的节点是否已经是根节点,如果是便直接返回自己。 简单思路 阅读全文
posted @ 2025-03-23 11:34 George0915 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 铜组 25FEB 所有题目链接 T1 大模拟。 思路挺简单的,就是调试比较麻烦。 初始化部分: 只需要处理左上角四分之一的点 [r,c],并计算它与对称点的 # 数量记为 cntr,c。 目标是使四个对称点的字符保持相同(全是 . 或全是 #)并计算 \(\min(cnt_ 阅读全文
posted @ 2025-03-23 11:34 George0915 阅读(8) 评论(0) 推荐(0) 编辑
摘要: T1 数据仅有 52,极小的数据范围导致这题只有一个问题:如何简短方便的去重并统计。 我选择了 map 做法:每个输入查找 map 中之前是否记录过此元素,如果记录过则证明已经拥有这张牌,反之则记录并将统计数增加。 代码如下: #include <bits/stdc++.h> using names 阅读全文
posted @ 2024-10-27 15:21 George0915 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 什么是倍增? 倍增,从字面及数学的角度就是 ”成倍增长“ 的意思。这能使线性问题转化为数级处理,优化时间复杂度。 不是人话是不是?听不懂是不是? 看这里。这是指我们在进行递推时,如果状态空间很大,通常的线性递推无法满足时间与空间复杂度的要求,那么我们可以通过成倍增长的方式,只递推状态空间中在 \(2 阅读全文
posted @ 2024-10-27 15:19 George0915 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 算法用途: Floyd 算法是用于解决两点间最短路径的一种算法,可以处理有向图或负权的最短路问题。 该算法时间复杂度为 O(N3),空间复杂度为 O(N2) 。 算法原理 Floyd 算法基于动态规划实现。 Floyd 算法一直在解决一个问题,寻找 \(i \rightarrow 阅读全文
posted @ 2024-10-27 15:18 George0915 阅读(35) 评论(0) 推荐(0) 编辑
摘要: DP 概述 DP 问题在 OIer 中很受欢迎,因为每个 DP 问题在某种意义上都是原创的,你必须思考其状态和状态转移方程才能为其发明解决方案。 DP,是一种基于分治,将原问题分解为简单子问题求解复杂问题的方法。 动态规划的耗时往往远少于朴素解法。 动态规划 / 递归 DP 可以被描述为一种通常基于 阅读全文
posted @ 2024-10-27 15:15 George0915 阅读(156) 评论(3) 推荐(0) 编辑
点击右上角即可分享
微信分享提示