上一页 1 ··· 4 5 6 7 8 9 10 11 下一页
摘要: 有两个约束条件的二分图匹配 我们回忆一下二分图匹配的匈牙利算法的具体流程,它是通过寻找增广路来判断最大匹配数的,我们再观察一下题目中的两个条件,只有两个条件都满足,才算找到一条增广路,所以我们可以分别寻找判断两个条件。即对两个二分图交替匹配,只有两个二分图都能找到增广路时,才算是一次匹配完成。 cp 阅读全文
posted @ 2018-01-11 16:34 Mr_Wolfram 阅读(189) 评论(0) 推荐(1) 编辑
摘要: 这是一道二分图匹配的题 "先%dalao博客" 建图并没有什么难的,但是关键在于如何使字典序最小。 一个很显然的想法是先求出一个完美匹配,然后从x集合的第一个元素开始,如果该元素匹配的较小的一个,那么继续,如果是较小的一个,那么强制把它转换成较小的一个,然后在其之后,寻找增广路,如果能找到的话,就修 阅读全文
posted @ 2018-01-11 15:45 Mr_Wolfram 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 这竟然是一道二分图 乍一看,可能是用搜索做,但是这个数据范围,一定会T。 我们观察发现,无论怎样变换,同一行的一定在同一行,同一列的一定还在同一列。所以说,一行只能配一列。这样,我们的目标就是寻找是否存在一种变换方式,使得行数与列数一一对应,且对应数为n。 我们可以把行数和列数作为二分图的两部分,然 阅读全文
posted @ 2018-01-09 16:48 Mr_Wolfram 阅读(194) 评论(0) 推荐(1) 编辑
摘要: 二分图匹配裸题 可以用匈牙利做,简单高效 输出具体的匹配路径时 ,直接输出match数组即可 cpp include include include include include using namespace std; int init(){ int rv=0,fh=1; char c=getc 阅读全文
posted @ 2018-01-08 19:07 Mr_Wolfram 阅读(182) 评论(0) 推荐(1) 编辑
摘要: 最为经典的匈牙利算法 匈牙利算法应用了增广路的性质,实际上就是通过搜索可行的增广路,每搜到一条,匹配数++ 还可以应用配对的方法去理解,此算法的时间复杂度 (V E),比较慢,但是实现较为简单。 dfs版 cpp include include include include include usi 阅读全文
posted @ 2018-01-08 18:31 Mr_Wolfram 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 人生中的第一道黑题。。。 其实就是k短路模板 cpp include include include include include include include using namespace std; const int MAXN=400005; int init(){ int rv=0,fh 阅读全文
posted @ 2018-01-06 19:10 Mr_Wolfram 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 这是一道次短路的题 但是本题有两个坑 1. 注意边权的范围,一定要在所有与距离有关的地方开 long long 2. 本题所求的并不是次短路,而是与最短路不同的最短的路径,如果最短路不止一条,那么就输出最短路的长度 cpp include include include include includ 阅读全文
posted @ 2018-01-06 17:59 Mr_Wolfram 阅读(229) 评论(3) 推荐(0) 编辑
摘要: 采用A 算法的k短路模板 cpp include include include include include include using namespace std; const int MAXN=200005; int init(){ int rv=0,fh=1; char c=getchar 阅读全文
posted @ 2018-01-04 21:38 Mr_Wolfram 阅读(193) 评论(3) 推荐(1) 编辑
摘要: 基于dijkstra实现的次短路算法 看了网上的代码,和我平常的风格不太一样,于是就自己写了一个。 dijkstra求次短路的原理是这样的:在求最短路的的过程中,我们同时更新一个dis2[]数组,表示次短路,dis2[v]有两个来源 1. dis2[v]=dis2[u]+e[i].dis 2. di 阅读全文
posted @ 2018-01-03 21:16 Mr_Wolfram 阅读(309) 评论(0) 推荐(1) 编辑
摘要: 这是一道差分约束的题,但是本题有两个坑点 1. INF要足够大 2. 本题问的是距离的最大值,距离一定是正的,所以我们不能只是单纯的最短路,而要注意每个点的位置关系,即向左走为负,向右走为正。 cpp include include include include include include d 阅读全文
posted @ 2018-01-02 09:47 Mr_Wolfram 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 经典的差分约束+二分答案。 本题的难点在于如何建图。 设x[i] 表示第i个小时可以开始工作的有多少个人。 num[i] 表示第i个小时最少需雇佣多少人。 s[i] 表示1...i小时实际开始工作的有多少人 因为最后要求的是s[24]的最小值,所以我们以s为中心建图。 因为我们求得是最小值,所以都转 阅读全文
posted @ 2017-12-29 10:36 Mr_Wolfram 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 差分约束做法 又是一道转换成前缀和的差分约束题,已知从s月到t月的收入w,设数组pre[i]代表从开始到第i个月的总收入 构造差分不等式 $ pre[s 1] pre[t]==w $ 为了满足松弛操作,我们将不等式转化成 $ pre[s 1] pre[t] =w $ 这样建图以后我们发现当且仅当图中 阅读全文
posted @ 2017-12-27 21:45 Mr_Wolfram 阅读(309) 评论(0) 推荐(1) 编辑
摘要: 差分约束 差分约束的裸题,关键在于如何建图 我们可以把题目中给出的区间端点作为图上的点,此处应注意,由于区间中被标记的点的个数满足区间加法,这里与前缀和类似,对于区间[L..R]来说,我们加入一条从L 1指向R的边,边权为ci。 这样还不够,因为这样建下来的图是离散的,我们还需要去挖掘题目中的隐藏条 阅读全文
posted @ 2017-12-26 10:03 Mr_Wolfram 阅读(190) 评论(0) 推荐(1) 编辑
摘要: 感觉有点像tarjan求SCC cpp include include include include include include using namespace std; const int MAXN=400005; int init(){ int rv=0,fh=1; char c=getc 阅读全文
posted @ 2017-12-19 19:29 Mr_Wolfram 阅读(348) 评论(0) 推荐(1) 编辑
摘要: =============================以下是最小生成树+并查集====================================== 【HDU】 1213 How Many Tables 基础并查集★ 1272 小希的迷宫 基础并查集★ 1325&&poj1308 Is I 阅读全文
posted @ 2017-12-18 11:16 Mr_Wolfram 阅读(546) 评论(4) 推荐(0) 编辑
摘要: 结构体+重载运算符写法 "十个可以用矩阵快速幂解决的经典题目" 阅读全文
posted @ 2017-12-18 11:01 Mr_Wolfram 阅读(162) 评论(1) 推荐(1) 编辑
摘要: 简单dfs 我们注意到,题目中的运算方式与杨辉三角极其相似,所以说本题实际上是一道加权的杨辉三角,搜索系数 cpp include include include include include include using namespace std; int init(){ int rv=0,fh 阅读全文
posted @ 2017-12-14 20:53 Mr_Wolfram 阅读(335) 评论(2) 推荐(0) 编辑
摘要: 简单版 cpp include include include include include include include using namespace std; const int MAXN=1000005; int n; char s[MAXN]; struct ACAM{ int nxt 阅读全文
posted @ 2017-12-12 19:04 Mr_Wolfram 阅读(148) 评论(0) 推荐(0) 编辑
摘要: trie树的异或和问题 本题是一道经典题,使用trie树维护所给出的集合,我们知道等比数列前n项的和比第n+1项小,所以本题可以使用贪心策略,对于每一个询问,我们从高位向低位匹配,寻找最大异或值,向下递归求解。 cpp include include include include include 阅读全文
posted @ 2017-12-09 11:08 Mr_Wolfram 阅读(209) 评论(0) 推荐(0) 编辑
摘要: ```cpp include include include include include include using namespace std; const int MAXN=5e6+5; int nume,n,m; char s[55],fff[4][20]={" ","OK","WRONG 阅读全文
posted @ 2017-12-08 21:27 Mr_Wolfram 阅读(183) 评论(1) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 下一页