YunYan

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

07 2020 档案

摘要:1、图的匹配:指的是图的不具有公共端点的边的集合。 图的最大匹配指不具有公共端点的最大边数。常见的问题有二分图的最大匹配,可以用dicnic解决或者用匈牙利算法解决。 2、图的边覆盖:是边子集的一种,指的是图中的所有顶点都是边子集中的某一条边的端点。最小边覆盖用最少的边来覆盖所有的顶点。 3、图的顶 阅读全文
posted @ 2020-07-24 21:33 Target--fly 阅读(1333) 评论(0) 推荐(0)

摘要:题目大意:N头牛,F个食物,D个饮料。每一个食物和饮料只能分享给一头牛,每一头牛也最多获得一个饮料和一个食物,问最多有几头牛可以同时获得一个食物和一个饮料? 这是一个典型的最大流问题。难点在于建图,建完图就是最大流裸题了。 关于见图。 每头牛都有喜欢的食物和饮料,首先看对牛与食物和牛与饮料分别被建边 阅读全文
posted @ 2020-07-24 15:45 Target--fly 阅读(121) 评论(0) 推荐(0)

摘要:题目连接 题目大意:一个n*n的太空矩阵,其中有m个地方存在小行星,有一种武器,该武器可以发射光束,这种光束可以一次性消灭一行或者一列小行星。问:消灭所有的小行星,最少需要多少发光束。 题解:这个题目咋一看看不出来是二分图的题目。设有小行星位于(x,y)。那么可以对x行发射光束,也可以对y列发射光束 阅读全文
posted @ 2020-07-23 15:55 Target--fly 阅读(152) 评论(0) 推荐(0)

摘要:最小费用流最大流问题指的是在一个网络流网络中,每条边有两个权值,分别指的是该边的流量上限和流入流量需要的费用。问当流入的流量为f时,最少需要多少的费用。这中问题称为最小费用流问题,当f=最大流时,称为最小费用流最大流问题。 最小费用流最大流:(洛谷的一个模板题) code: #include<bit 阅读全文
posted @ 2020-07-23 14:52 Target--fly 阅读(355) 评论(0) 推荐(0)

摘要:一个讲的不错的blog 模板code: vector<int>ve[N]; bool mark[N]; int girl[N]; bool find(int x){ for(int i=0;i<ve[x].size();i++){ if(!mark[ve[x][i]]){ mark[ve[x][i] 阅读全文
posted @ 2020-07-22 13:41 Target--fly 阅读(138) 评论(0) 推荐(0)

摘要:dicnic算法求最大流。 dicnic算法就像是对F-F算法的一个优化,F-F算法是无脑求增广路径,直到求不出来路径为止。 比如说这个图,求从1~4的最大流量,很显然应该是200,路径1--2--4和路径1--3--4。但是如果FF算法第一次走的路径是1--2--3--4,那么这条路径的流量就变成 阅读全文
posted @ 2020-07-17 21:56 Target--fly 阅读(377) 评论(0) 推荐(0)

摘要:EK算法是解决最大流问题常用的算法之一,复杂度优于FF算法。EK算法的思路和FF算法是一样的。不同之处是EK算法通过广搜寻路,FF算法深搜寻路。 EK算法的具体步骤: 首先是存图,可以采用邻接矩阵直接存,这种存图方式是比较简单的,后面更新残余网络也比较容易,但是空间复杂度比较高,不实用。 另外一种存 阅读全文
posted @ 2020-07-17 17:35 Target--fly 阅读(298) 评论(0) 推荐(0)

摘要:看了一个下午的最大流问题,首先要明白最大流是用来干嘛的。直观来说,流就像它的名字一样,从源头s运送一些“东西”到汇聚点t,比如下水道系统运输水流,公路网络运输车流。最大流就是求运输的“东西”的最大值。在运输的过程中,每条边都要有个权值c(i,j),用来表示的是该边i-->j的可以承受的最大运输量。 阅读全文
posted @ 2020-07-16 19:26 Target--fly 阅读(619) 评论(0) 推荐(0)

摘要:题目链接 题解: 1 直接排序。 最简单的方法,放到一维数组中,直接排序,时间复杂度为o((n^2)log(n^2)),空间复杂度为o(n^2),如果n>=1e4就会超时。 代码略: 2 堆排序。 这种方法是很一个很巧妙的方法。充分用到了矩阵的每一行和每一列都是有序的。首先将第一列放到堆中,然后取出 阅读全文
posted @ 2020-07-15 16:14 Target--fly 阅读(177) 评论(0) 推荐(0)

摘要:归并排序是众多排序方法中比较稳定的一种排序。时间复杂度是o(nlogn),是一种较优的排序方法。 归并排序是一种典型的分治法,其基本思想就是将大区间划分为小区间,先对小区间进行排序,然后在通过两个有序的小区间归并为一个有序的大区间。首先对待排序数组以二叉树的形式进行分割; 比如说对数组[5,4,3, 阅读全文
posted @ 2020-07-14 11:30 Target--fly 阅读(228) 评论(0) 推荐(0)

摘要:以leetcode上的一个题目为例子。 连接 解题思路: 举个例子。word1 = abcd word2=abce.将word1变为word2.假设我们均考虑到第4个字符,d!=e, 直接替换 也就是前三个字符需要的次数+1。 把d删除掉,让第三个字符c和word2的第四个字符匹配,在d的后边添加一 阅读全文
posted @ 2020-07-13 15:04 Target--fly 阅读(154) 评论(0) 推荐(0)

摘要:题目连接 这个题目对dp思想的理解和对dp问题边界问题的处理很有帮助。 题解:定义dp[i][j]表示s的前i个字符和p的前j个字符是否可以匹配。 假如说p的第j个字符和s的第i个字符一样,那么dp[i][j]=dp[i-1][j-1],不一样的话,直接就是false 如果p的第j个字符是?,那么一 阅读全文
posted @ 2020-07-13 11:36 Target--fly 阅读(126) 评论(0) 推荐(0)

摘要:题目链接 题解:定义状态dp[i][j]为从当前状态到终点的最小初识值。那么dp[i][j]可以由dp[i+1][j]和dp[i][j+1]转移过来,转移方程为min(dp[i+1][j],dp[i][j+1])-dungeon[i][j]即当前状态为其右下的最小值减去当前的矩阵的值,就是所需要的值 阅读全文
posted @ 2020-07-12 19:25 Target--fly 阅读(159) 评论(0) 推荐(0)

摘要:首先要清楚什么是二叉搜索树,数据结构课上讲过,就是父节点大于左节点小于右节点的二叉树,二叉搜索树的性质就是中序遍历后得到的数组为升序数组。 具体的构建思路采用递归分分治的方法构造,根节点一定是中间的节点,确定好根节点后,根节点左边的为左儿子节点,右边的为右儿子节点。 code: /** * Defi 阅读全文
posted @ 2020-07-03 10:52 Target--fly 阅读(130) 评论(0) 推荐(0)