上一页 1 ··· 17 18 19 20 21
摘要: 求极大强连通分量的Tarjan算法 首先,在有向图G中,如果两个顶点vi,vj间(vi<>vj)都有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components),如果一个强连通分量中不再能加入任何一个顶点,则这个强连通分量是一个极大强连通分量。 由上面的定义,可以知道,强连通分量中各点可以互相到达,则我们可以找到每个极大强通分量的“根结点”,再通过从底层节点 阅读全文
posted @ 2011-10-13 06:50 Codinginging 阅读(1187) 评论(0) 推荐(1) 编辑
摘要: 原创是我可敬的师傅,搜索到的上面那个应该就是原文. 单调队列及其应用 单调队列,望文生义,就是指队列中的元素是单调的。如:{a1,a2,a3,a4……an}满足a1<=a2<=a3……<=an,a序列便是单调递增序列。同理递减队列也是存在的。 单调队列的出现可以简化问题,队首元素便是最大(小)值,这样,选取最大(小)值的复杂度便为o(1),由于队列的性质,每个元素入队一次,出队一次,维护队列的复杂度均摊下来便是o(1)。如何维护单调队列呢,以单调递增序列为例:1、如果队列的长度一定,先判断队首元素是否在规定范围内,如果超范围则增长队首。2、每次加入元素时和队尾比较,如果当前元 阅读全文
posted @ 2011-10-13 06:40 Codinginging 阅读(12164) 评论(1) 推荐(8) 编辑
摘要: 【题目描述】司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示:如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向左右各两格,沿纵向上下各两格。图上其它白色网格均攻击不到。从图上可见炮兵的攻击范围不受地形的影响。现在,将军们规划如何部署炮兵部队,在防止误伤的前提下(保证任 阅读全文
posted @ 2011-10-13 06:12 Codinginging 阅读(6094) 评论(0) 推荐(3) 编辑
上一页 1 ··· 17 18 19 20 21