随笔分类 -  图论

摘要:给你N个点的无向图 (1 <= N <= 15,000),记为:1…N。 图中有M条边 (1 <= M <= 30,000) ,第j条边的长度为: d_j ( 1 < = d_j < = 1,000,000,000). 现在有 K个询问 (1 < = K < = 20,000)。 每个询问的格式是: 阅读全文
posted @ 2017-10-21 18:37 dancer16 阅读(241) 评论(0) 推荐(0)
摘要:给出一个N*N的矩阵B和一个1*N的矩阵C。求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大。其中A^T为A的转置。输出D Input 第一行输入一个整数N,接下来N行输入B矩阵,第i行第J个数字代表Bij. 接下来一行输入N个整数,代表矩阵C。矩阵B和矩阵C中每个数字都是不超过10 阅读全文
posted @ 2017-09-24 15:04 dancer16 阅读(116) 评论(0) 推荐(0)
摘要:找到的模板,不错不错。 阅读全文
posted @ 2017-07-26 21:09 dancer16 阅读(141) 评论(0) 推荐(0)
摘要:在这个“打鼹鼠”的游戏中,鼹鼠会不时地从洞中钻出来,不过不会从洞口钻进去(鼹鼠真胆大……)。洞口都在一个大小为n(n< =1024)的正方形中。这个正方形在一个平面直角坐标系中,左下角为(0,0),右上角为(n-1,n-1)。洞口所在的位置都是整点,就是横纵坐标都为整数的点。而SuperBrothe 阅读全文
posted @ 2017-07-25 20:16 dancer16 阅读(354) 评论(0) 推荐(0)
摘要:一、网络流的定义:有向图G=(V,E)中,点集中有一源点S,一汇点T。且S入度为0,T出度为0。对于每条边edge,都有一权值函数c,表示其容量,一权值函数f,表示其实际流量。 满足对于任意一条边都有f(edge)<=c(edge)。 二、最大流的定义:在不违背网络流的定义下,S到T的最大流量。 三 阅读全文
posted @ 2017-07-23 16:30 dancer16 阅读(5065) 评论(0) 推荐(0)
摘要:我们在研究问题时经常能碰到这一类为题:在某个棋盘上有一种棋子,问最多放下几个棋子。或者有一堆棋子,问你移去最少的棋子数目,使得剩下来的棋子两两不攻击。 先看下面这道题 问题 E: P1035 题目描述 给出一张n*n(n< =100)的国际象棋棋盘,其中被删除了一些点,问可以使用多少1*2的多米诺骨 阅读全文
posted @ 2017-07-19 22:40 dancer16 阅读(1513) 评论(0) 推荐(0)
摘要:首先求最小环有一个比较好想的方法:每次删掉一条边,看看这条边n所连的点i之间的距离(dijkstra),时间复杂度O(m*V^2*logv) 其实floyd也能完成这个功能。f[i][j][k]表示i到j在中间点为1~k的最近距离 对于一个环,我们假设i和j中只夹这一个数k,则环长为f[i][j][ 阅读全文
posted @ 2017-07-07 08:37 dancer16 阅读(298) 评论(0) 推荐(0)
摘要://Tarjan 求桥和割点 Tarjan(u,fa) { DFN[u]=LoW[u]=++time; Cu=grey; for each e=(u,v) { Tarjan(v,u); if(Cv=white) { low[u]=min(low[u],low[v])... 阅读全文
posted @ 2017-07-06 09:00 dancer16 阅读(141) 评论(0) 推荐(0)
摘要:上次貌似在处理RMQ问题时提起了倍增,这玩意可以求动态LCA(比较牛),现在我们在讲dfs时间戳的时候发现了一个求静态LCA的算法 何为时间戳? 在这里我们定义两个数组f和d,在深度优先搜索时记录这两个的值——f表示对这个店开始搜索的时间,d表示对这个店完成搜索的时间 我们假设所有操作花费的都是单位 阅读全文
posted @ 2017-06-30 10:31 dancer16 阅读(262) 评论(0) 推荐(0)
摘要:问题 C: 种树 题目描述 为了绿化乡村,H村积极响应号召,开始种树了。 H村里有n幢房屋,这些屋子的排列顺序很有特点,在一条直线上。于是方便起见,我们给它们标上1~n。树就种在房子前面的空地上。 同时,村民们向村长提出了m个意见,每个意见都是按如下格式:希望第li个房子到第ri个房子的房前至少有c 阅读全文
posted @ 2017-06-15 15:14 dancer16 阅读(194) 评论(0) 推荐(0)
摘要:题目描述 小生和小森在玩兔子之谜游戏。有三只兔子排成一排。知道每只兔子的初始位置,以及三个兔窝的位置。 游戏的规则是,重复以下步骤k次:选择两个不同的兔子A和B,分别位于a和b。A可以跳过B到达2*b-a的点: 跳跃是不允许其他小兔子已经在点2*b-a的位置上: 跳跃也不允许一次跳过一个以上的兔子: 阅读全文
posted @ 2017-06-11 09:54 dancer16 阅读(451) 评论(0) 推荐(0)
摘要:先给一个线性规划的定义: 在通用的线性规划问题中,我们通常给定一个m*n的矩阵A,一个m维的向量和一个n维向量(权值函数)。我们希望找到一个n维向量x,使得在由Ax<=b给定的m个约束条件下优化目标函数ci*xi,这里的优化是指目标函数的取值最大。 根据矩阵乘法,我们大概脑补出这样一幅图 ps:上图 阅读全文
posted @ 2017-06-10 20:59 dancer16 阅读(1875) 评论(0) 推荐(0)
摘要:上次我们学习了Dijkstra,其有一个不错的时间复杂度上限:O(n log n),但其对于负权边的处理会出错啦 一个简单的小例子: 这个图中如果我们发现以3号点为原点,跑一边dijkstra的话 我们先会取2号点进入原点集合,再取一号点。这样得到的dist[2]=3,dist[1]=4 错! 我们 阅读全文
posted @ 2017-06-10 19:14 dancer16 阅读(388) 评论(0) 推荐(0)
摘要:dijkstra是一种单元最短路径算法,其能在较好时间复杂度内处理这一问题。但其对负权圈的处理让人不太满意——会陷入死循环 其思想和Prim算法差不多,都是贪心。 把图中的所有点划分为两个集合:包含远点S和不包含原点S的 每次从不包含原点S的集合中找出一个离原点S最近的点(这样就没有点能够比这个点更 阅读全文
posted @ 2017-06-08 19:35 dancer16 阅读(9451) 评论(2) 推荐(0)
摘要:转载一下YH大佬的blog地址http://blog.csdn.net/jokercold 。。 直译小丑严寒2333 以及HK大佬 http://blog.csdn.net/yuyaohekai 宿命的PSS 题目描述 最小生成树P.S.S在宿命的指引下找到了巫师Kismi。P.S.S希望Kism 阅读全文
posted @ 2017-06-05 20:16 dancer16 阅读(336) 评论(0) 推荐(0)
摘要:今天听了CLRS的第二作者讲的课程,关于最小生成树的算法。 其实就是先模拟一下小样例(不是单纯模拟,而是发现其中的规律,要思考) 然后发现最优子结构-如果(u,v)是一条唯一连接两点的边,那么将原图拆分为两块(一块包含u,一块包含v),两图分别最优解+dist[u,v]就是原图的最优解了。 然后发现 阅读全文
posted @ 2017-05-31 21:59 dancer16 阅读(181) 评论(0) 推荐(0)

描述