- 博客(7)
- 收藏
- 关注
原创 寒假第七讲:图论
无向图与有向图的区别: 在无向图中,处理边时需要注意两端节点都要彼此关联,因此在输入时每添加一条边,要将这条边的两端节点都加入邻接表。图中的最优子结构: 在图论中,我们经常需要将问题分解为子问题,利用最优子结构来计算全局最优解。
2025-02-19 16:39:55
746
原创 寒假第六讲:动态规划初步
映射与重排(Index Mapping)在处理两个排列的相关问题时,我们常常需要将一个排列中的元素转换成另一个排列中的位置索引。例如,P1中的元素在P2中的位置,我们通过index[]数组记录下每个元素在P1中的索引。这样,我们可以高效地将问题转化为一个新的问题(如 LIS 问题)。二分查找(Binary Search)为了优化求解过程,代码中使用了 lower_bound进行二分查找。它的作用是快速找到一个数应该插入的位置,保证dp数组始终保持递增顺序。在 LIS 问题中,这种做法大大提高了效率。
2025-02-16 19:15:02
774
原创 寒假第五讲:搜索
定义:从起始节点出发,逐层访问所有邻居节点。实现:使用队列(FIFO)。应用:最短路径(无权图)、层次遍历。时间复杂度:O(V + E),空间复杂度 O(V)。优缺点优点:能找到最短路径。缺点:内存消耗大。定义:从起始节点出发,尽可能深入探索每条路径。实现:使用递归或栈(LIFO)。应用:拓扑排序、强连通分量、组合问题。时间复杂度:O(V + E),空间复杂度 O(h)(h 为树的高度)。优缺点优点:实现简单,内存使用少。缺点:可能找不到最短路径。BFS:需要最短路径时使用。
2025-02-13 17:47:19
1549
原创 寒假第四讲:数论
基础概念:整除、同余、素数和唯一分解定理是数论的基础,理解这些概念是学习数论的前提。核心算法:辗转相除法、扩展欧几里得算法和线性筛是数论中的核心算法,掌握这些算法可以解决许多数论问题。应用广泛:数论中的许多概念和算法在计算机科学、密码学等领域有广泛应用,特别是在模运算和素数相关的算法中。
2025-02-10 15:27:38
447
原创 寒假第二讲:二分法
输入读取读取卡牌种类的数量n和可以手写的卡牌数量m。读取每种卡牌的数量a[i]和可以手写的数量b[i]。初始化设置二分查找的范围,左边界L为 1,右边界R为n * 2(假设最多可以制作n * 2套牌)。二分查找在L和R之间进行二分查找,计算中间值mid。使用check(mid)函数判断是否可以制作mid套牌:计算需要的额外卡牌数量cnt,即mid - a[i]的总和(如果mid大于a[i]如果cnt小于等于m,说明可以制作mid套牌,更新左边界L;否则更新右边界R。输出结果。
2025-01-26 18:06:36
1600
原创 寒假第一讲:c++基础
学习到了c++实用的基础语法,如auto,for循环等等。对几个STL容器有了更全面更系统的学习。对算法有了更进一步的认识:如何才能更高效快速解出一道题需要更巧妙灵活的思维,多记多做。不一定需要按照题目的每句话去编写代码,尽可能把题目所需结果的过程简化,比如只需要看是不是yes这三个字母那可以把输入的都转变成这个而不是一一比对;比如要看规则k是否正确,只需关注支持k的数量,其他的不用浪费时间统计;
2025-01-23 17:42:44
1627
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅