首页
学习
活动
专区
圈层
工具
发布

ACM竞赛学习指南(算法工程师成长计划)

大学期间必须要学好的课程:C/C++两种语言(或JAVA)、高等数学、线性代数、数据结构、离散数学、数据库原理、操作系统原理、计算机组成原理、人工智能、编译原理、算法设计与分析。...学会使用栈和队列等线性结构。 掌握BFS和DFS以及树的前序、中序、后序遍历。 学会分治策略。 掌握排序算法:选择排序、归并排序、快速排序、计数、基数排序等等。...图论:图的存储、欧拉回路的判定、单源最短路Bellman-Ford算法及Dijkstra算法、最小生成树Kruskal算法及Prim算法。 学会使用C语言进行网络编程与多线程编程。...高等数学、线性代数:做几道"矩阵运算"分类下的题目。 学习matlab,如果想参加数学建模大赛,需要学这个软件。 大一假期: 掌握C++语法,并熟练使用STL(重要)。...图论一:强连通分量、双连通分量、割点、桥、强连通分量和双连通分量缩点、二分图匹配(二分图最大匹配、最小点集覆盖、最小路径覆盖、二分图最优匹配、二分图多重匹配)、网络流(最大流的基本SAP、最大流的ISAP

4.4K10

统计子树中城市之间最大距离(枚举所有可能+图的最大直径)

请你返回一个大小为 n-1 的数组,其中第 d 个元素(下标从 1 开始)是城市间 最大距离 恰好等于 d 的子树数目。 请注意,两个城市间距离定义为它们之间需要经过的边的数目。 示例 1: ?...树的直径(图的最大直径结论) 先回溯生成所有的子集的可能 对每个子集,判断所有点是否联通 再计算联通图的最大直径 选择任意一点A开始bfs,记录最后遍历到的点B 从B开始bfs遍历,最后到达的点C,BC...的距离就是最大直径 class Solution { vector ans; vector> g;//图 vector sub;//子节点集...(start, true);//以任意一点开始bfs if(last == -1)//图不连通,返回 return -1; return bfs(...last, false);//以last点开始bfs求最大直径 } int bfs(int id, bool option) { int count = 0, total

60830
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    基于networkx分析Louvain算法的社团网络划分

    8图的直径和半径 图的所有节点偏心距的最大值就是图的直径,最小值就是半径。  9图的紧密中心性(closeness) 在图论中,紧密度是图中一个节点的中心性度量。...一般来说,那种需要让尽可能多的人使用的设施,它的接近中心度一般是比较高的。 ...4. 3Python实现BFS和DFS(基于无向图)。...2求图的常用属性    读取CSV文件获取图的边集合列表 部分原始数据如图:    计算图的各种属性整体图,看到所有人都是有联系的,由于人物比较多,所以图显示不出具体的效果。...图:各个节点的偏心距  查看节点到另一节点或其他节点的最短路径 查看节点到另一节点或其他节点的最短路径的长度 紧密中心性:越大说明中心越强。

    4.2K30

    文心一言 VS 讯飞星火 VS chatgpt (310)-- 算法导论22.2 8题

    文心一言: 为了计算一棵树的直径,我们可以采用两次广度优先搜索(BFS)的方法。...第一次BFS找到树中最远的一个节点,记为start;然后,从start节点开始进行第二次BFS,找到的最远节点所在的路径即为树的直径。 算法步骤 1....360智脑: 要计算树的直径,我们可以使用一个简单的两遍搜索算法。...这个算法的基本思想是:首先从任意一个节点开始进行深度优先搜索(DFS)或广度优先搜索(BFS),找到离该节点最远的节点;然后从这个最远节点出发,再次进行DFS或BFS,找到离它最远的节点,这两点之间的距离就是树的直径...在实际应用中,你可能需要根据具体的输入格式来构建图,并添加适当的错误处理逻辑。 混元: 为了计算树的直径,我们可以使用深度优先搜索(DFS)算法。具体步骤如下: 1.

    29220

    算法标签

    最近公共祖先,LCA 节点间距离 树的直径 动态树 树链部分,树剖 Link-Cut Tree,LCT 树的应用 并查集 (Disjoint set) 树的遍历 哈夫曼树 RMQ 树套树 可持久化 虚树...最大匹配 匈牙利算法 一般图的最大匹配 Konig定理 带权二分图匹配 稳定婚姻系统 搜索 广度优先搜索, BFS 深度优先搜索, DFS 剪枝 记忆化搜索 启发式搜索 启发式迭代加深, IDA...* Dancing Links 爬山法 模拟退火 遗传 A*算法 迭代加深 随机调整 网络流 最大流 Dinic Sap 有上下界的最大流 最小割 闭合图 最小点权覆盖集 最大点权覆盖集 分数规划...袋与球问题 鸽笼 熔斥 斐波那契,Fibonacci 卡特兰,Catalan Stirling 生成函数 卢卡斯,Lucas 线性规划 概率论,统计 众数 简单概率 条件概率 Bayes 期望 线性代数...矩阵运算 矩阵乘法 线性递推,递推式 高斯消元 异或方程组 线基性 微积分初步 极限 导数 积分 定积分 立体解析几何 级数 图论 图遍历 拓扑排序 AOV AOE 最短路 Floyd

    97520

    ACM成长之路(干货) 我爱ACM,与君共勉

    学会BFS与DFS a) 迷宫求解(最少步数) b) 水池数目(NYOJ27) c) 图像有用区域(NYOJ92) d) 树的前序中序后序遍历 动态规划(15题以上),要学会使用循环的方法写动态规划...学会使用C语言进行网络编程与多线程编程 高等数学 线性代数 a) 明确线性代数的重要性,首先是课本必须学好 b) 编写一个Matrix类,进行矩阵的各种操作,并求编写程序解线性方程组。...以下为选修,随便选一两个学学即可: (较重要)使用C语言或C++编写简单程序来调用一些简单的windows API,或者在linux下进行linux系统调用,其目的是明白什么是API(应用程序接口)。...学习使用C或C++连接数据库。...二分图最大匹配 ii. 最小点集覆盖 iii. 最小路径覆盖 iv. 二分图最优匹配 v. 二分图多重匹配 f) 网络流 i. 最大流的基本SAP ii.

    1.5K50

    Qtech 暑假未讲到的算法(不完全)

    字符串处理: KMP、字典树、后缀树、后缀数组(两种求后缀数组的方法 倍增和DC3算法) 包括C++ STL 里面一些东西 比如sort vector map set stack queue...还有快排、归并、堆、冒泡、选择、插入、希尔、基数、计数、地精等排序算法最好了解一下,还有基于快排的区间第K值的快速查找法 二、图论算法: 二分匹配、网络流、几种最短路径算法、差分约束、强or...弱连通图..........四、数论&计算几何&博弈论 这个就涉及的多了,包括各种数学定理、微积分、概率论、线性代数等等数学知识,有很多很难的问题,不过一些基础的数论还是要知道的,比如gcd.......五、搜索 假期讲了dfs和bfs的原理,它们的应用很广,还有一些衍生出来的算法,比如双向广搜、A-star搜索、跳点搜索。。。

    49410

    Light OJ Dynamic Programming

    1068 – Investigation 数位dp 能被K整数且各位数字之和也能被K整除的数 dp[i][j][k] 到第i位每位数字之和的余数为j 当前数字余数为k 1079 – Just another...Robbery 01背包 全部钱之和为背包体积 不被抓的概率为物品价值 1032 – Fast Bit Calculations 二进制数中连续两个‘1’出现次数的和 dp[i][j][k] 第i位出现...j次’11‘最后一位是否为1 1110 – An Easy LCS LCS 1140 数位dp 两个数之间的全部数中零的个数 dp[i][j][k] 到第i为出现j个有效0是不是全为0(k==true)...全然背包 1233 – Coin Change (III) 多重背包 1257 – Farthest Nodes in a Tree (II) 树的直径 直接2次BFS求树的直径 1421 – Wavio...Sequence 正反2次2分+LIS 1422 – Halloween Costumes 间隔dp dp[l][r] l至r的需要的最小数目 版权声明:本文博客原创文章。

    65720

    手把手刷二叉树系列完结篇

    当然,最主要的原因还是因为教科书上从来没有这么教过…… 上文举了两个简单的例子,但还有不少二叉树的题目是可以同时使用两种思路来思考和求解的,这就要靠你自己多去练习和思考,不要仅仅满足于一种熟悉的解法思路...现在让我求整棵树中的最长「直径」,那直截了当的思路就是遍历整棵树中的每个节点,然后通过每个节点的左右子树的最大深度算出每个节点的「直径」,最后把所有「直径」求个最大值即可。...root) { // 对每个节点计算直径,求最大直径 traverse(root); return maxDiameter; } // 遍历二叉树 void traverse...: 前文 BFS 算法框架 就是从二叉树的层序遍历扩展出来的,常用于求无权图的最短路径问题。...当然这个框架还可以灵活修改,题目不需要记录层数(步数)时可以去掉上述框架中的 for 循环,比如前文 Dijkstra 算法 中计算加权图的最短路径问题,详细探讨了 BFS 算法的扩展。

    54020

    统计学-随机变量

    代数中使用的变量一次不能具有多个值。如果随机变量X = {0,1,2,3} 那么X可以是随机的0、1、2或3,其中每个都有不同的概率。”...用Adobe Illustrator美化matplotlib输出图 书是使用的上面文章里面的书。 直方图通常将样本数据分成若干个连续的区间,也称为“箱子”或“组”。...直方图中矩形的纵轴高度可以对应频数、概率或概率密度。 一般我们使用的时候,频数用到最多。 你看这个图多漂亮,就算不懂都一目了然 频数,也叫次数,是指在一定范围内样本数据的数量。...先不管哪些公式啥的,就记住我说的话:指的是对函数的积累总和或面积的计算过程。在微积分中,积分是求解函数的定积分或不定积分,用于计算曲线下面积、求函数的反导数等。...可使用 PDF 确定随机变量值的较高和较低概率的范围。例如,只有较小百分比的软木塞 (1%) 直径小于 2.8 厘米。

    59510

    人工智能之数学基础 离散数学:第二章 图论

    本文系统讲解:图的基本概念(有向图/无向图、权重、度)图的表示方法(邻接矩阵、邻接表)图的遍历算法(深度优先搜索DFS、广度优先搜索BFS)最短路径算法(Dijkstra、Floyd-Warshall)...如社交网络)→邻接表三、图的遍历算法1.广度优先搜索(BFS)策略:逐层扩展,使用队列(FIFO)应用:最短路径(无权图)连通分量二分图检测时间复杂度:O(n+m)O(n+m)O(n+m)算法步骤:将起始节点入队...,标记已访问当队列非空:出队一个节点uuu遍历uuu的所有未访问邻居vvv标记vvv已访问,入队2.深度优先搜索(DFS)策略:一条路走到黑,使用栈(LIFO)或递归应用:拓扑排序强连通分量(Kosaraju...-大稀疏图:邻接表+Dijkstra(堆优化)无权图:直接用BFS求最短路径负权边:改用Bellman-Ford或SPFA后续python过渡项目部分代码已经上传至...资料关注公众号:咚咚王《Python编程:从入门到实践》《利用Python进行数据分析》《算法导论中文第三版》《概率论与数理统计(第四版)(盛骤)》《程序员的数学》《线性代数应该这样学第3版》《微积分和数学分析引论

    19110

    【Auto.js】使用Pro 8.0 API优化图色或无障碍的耗电问题

    由于Auto.js目前的API都是同步的,要在屏幕中搜索某张图色或者某个控件时,必须无限循环查找,这实际上非常耗电。...为了解决这些问题,Auto.js Pro 8.0.0-3引入了两个新的API,来尽量减少图色模块和控件模块使用时的耗电。...图色模块的耗电优化 requestScreenCapture(options) options {Object} async {Boolean} 是否以异步事件的形式提供截图 width {Number...实测在普通软件界面的找图中,CPU使用率减少了75%左右。 无障碍功能的耗电优化 与找图找色类似,在以前,Auto.js也一直只能通过无限循环去判断当前界面、寻找控件,这实际上对省电优化十分不友好。...) event {String} 要监听的事件 callback {Function} 事件回调 返回 {EventEmitter} 以上两个函数用于监听一个或多个无障碍事件。

    1.5K20

    数据结构套路实战:堆、哈希、二叉树在题目中的高频用法

    记录访问过的状态(如 BFS/DFS 中的 visited)。 快速判断状态是否重复或等价。 哈希解法: Memoization: 用哈希表缓存函数参数与计算结果的映射。...BFS/DFS visited: 用 set 或 dict 存储已访问的节点(状态)。状态的表示是关键(坐标、序列化字符串、位图等)。...) LeetCode 226: 翻转二叉树 (前序或后序遍历) 高频场景 2:广度优先搜索(BFS) - 层序遍历 核心: 使用队列(Queue)按层处理节点。...求每层的最大值/平均值。 找到从根节点到叶节点的最短路径(BFS 首次到达叶节点)。 序列化/反序列化二叉树(按层存储)。...# 可能更新全局结果 (如最大路径和、最长直径) return current_info 高频场景 5:最近公共祖先(LCA) 问题模式: 求二叉树中两个节点 p 和 q 的最近公共祖先

    42010

    地图导航的幕后英雄:图论如何改变出行?—全程动画可视化数据结构算法之图

    }MGraph; 使用邻接表中的意义: 邻接矩阵是使用数组实现的顺序存储,空间复杂度高,不适合存储稀疏图 邻接表是顺序+链式存储 定义: ​ 其实这和树的孩子表示法是类似的,孩子表示法:顺序存储各个结点...使用上面两个基本操作 标记哪些顶点被访问过 都初始化为false 需要一个辅助队列 //广度优先遍历 void BFS(Graph G, int v){ //从顶点v出发,广度优先遍历图...,因此深度优先遍历序列不唯一,深度优先生成树也不唯一 对无向图进行BFS/DFS遍历 图的遍历与图的连通性: 调用BFS/DFS函数的次数=连通分量数 对于连通图,只需调用1次 BFS...,称为该路径的带权路径长度 BFS算法求单源最短路径只适用于无权图,或所有边的权值都相同的图 算法思想以及所用的数据结构[面前手撕一遍]: 初始:从V0开始,初始化三个数组信息 循环遍历所有结点...最短路径问题之Floyd算法 ——邻接矩阵表示 算法思想: Floyd算法:求出每一对顶点之间的最短路径 使用动态规划思想,将问题的求解分为多个阶段 对于n个顶点的图G,求任意一对顶点 Vi

    73310
    领券