
图论
只玩三国的程序猿
23333333333
展开
-
POJ 1797 Heavy Transportation
Description Background Hugo Heavy is happy. After the breakdown of the Cargolifter project he can now expand business. But he needs a clever man who tells him whether there really is a way from the原创 2015-08-29 17:50:40 · 515 阅读 · 0 评论 -
HDU 1878 欧拉回路
题意: 欧拉回路的判断条件, 一、无向图 每个顶点的度数都是偶数,则存在欧拉回路。 二、有向图(所有边都是单向的) 每个节顶点的入度都等于出度,则存在欧拉回路。 以上两种情况都很好理解。其原理就是每个顶点都要能进去多少次就能出来多少次。 三、混合图(有的边是单向的,有的边是无向的。常被用于比喻城市里的交通网络,有的路是单行道,有的路是双行道。) 找到一个原创 2016-03-05 00:16:54 · 510 阅读 · 0 评论 -
HDU 3062 Party(2-SAT入门+学习)
题意: 首先推荐一个容易学习的博客,2-SAT的建模能够看懂,其他的都是套路。戳这里 2-SAT的模板题,把丈夫和妻子分别看做同一个事物的两个方面,这样的话,就能满足2-SAT的基本要求了,一组事物只能选一个的要求,其他 的按要求建边就可以了,可以测板子好坏。代码://// Created by CQU_CST_WuErli// Copyright (c) 2016 CQ原创 2016-03-07 23:20:03 · 506 阅读 · 0 评论 -
ZOJ 3290 Treasure Map(DLX+精确覆盖)
题意:题意就是让你找到最少的能够覆盖这个矩形的小矩形数。就是DLX模板题。一开始数组开小了T。。。。那个我在别人哪里看到的剪枝没啥用- -,不过DLX和搜索联系很大,会剪枝很有用。代码://// Created by CQU_CST_WuErli// Copyright (c) 2016 CQU_CST_WuErli. All rights reserved.//#includ原创 2016-02-23 23:05:59 · 432 阅读 · 0 评论 -
HDU 4085 Peach Blossom Spring(斯坦纳树+dp)
题意: 给你一些点和边,让你选择一下边,是的前k个点和后k个点连通且代价最小,但是除了这2k个点,好友一些其他的点。 一开始我以为是MST,后来发现 不行,然后就是网络流乱搞,然并卵,就是因为有其他的点可用可不用。 后来一看才知道原来是斯坦纳树。。。。如此高级的东西。 斯坦纳树的定义:斯坦纳树问题是组合优化问题,与最小生成树相似,是最短网络的一种。 最小生成树是在给定的点原创 2016-03-08 23:06:08 · 1073 阅读 · 0 评论 -
HDU 1435 Stable Match(稳定婚姻问题|盖尔沙普利算法)
题意: 标准的稳定匹配问题,具体的看刘汝佳的训练指南,很好理解,并不难,所以这题可以用来测板子。代码://// Created by CQU_CST_WuErli// Copyright (c) 2016 CQU_CST_WuErli. All rights reserved.//#include <iostream>#include <cstring>#include <c原创 2016-03-09 23:33:18 · 1498 阅读 · 0 评论 -
HDU 2295 Radar(二分+重复覆盖)
题意:重复覆盖经典题目,然而要浮点数二分答案,精度是个坑- -浮点数二分和整数二分还是有点不同的。我的代码跑的可能有点慢,应该是模板的关系。代码://// Created by CQU_CST_WuErli// Copyright (c) 2016 CQU_CST_WuErli. All rights reserved.//#include <iostream>#include原创 2016-02-24 22:05:44 · 485 阅读 · 0 评论 -
FZU 1686 神龙的难题(重复覆盖)
题意:重复覆盖模板题。但是一开始T的不要不要的,迫不得已,改了自己的模板。。。代码://// Created by CQU_CST_WuErli// Copyright (c) 2016 CQU_CST_WuErli. All rights reserved.//#include <iostream>#include <cstring>#include <cstdio>#inc原创 2016-02-24 22:07:00 · 635 阅读 · 0 评论 -
舞蹈链模板(数组版本+结构体版本)
目测结构体跑的比驻足慢一点,但又有时候结构体快,看个人喜好吧。结构体是我一开始写的。里面同时包含了多重覆盖和精确覆盖两种。结构体版本:struct P { int right,left,down,up; int size; int x,y;};struct DLX { const static int maxn=10000; // 节点总数 P p[ma原创 2016-02-17 22:54:27 · 644 阅读 · 0 评论 -
POJ 3177 Redundant Paths(Tarjan_BCC+缩点)
题意:给你一个联通无向图,让你添加最少的边,使得这个图双联通。题意很清晰,只要用tarjan_bcc算法缩点就能形成一棵树。然后怎么计算最少的边呢?我们用一种贪心的方法,我们想尽量让一条边能够让最多的点形成一个环,那么我们就找LCA最远的一对叶节点,连起来,然后再找一对LCA最远的,这样一直下去,就行了。如果叶节点为偶数,那么答案就是leaf/2,如果为奇数,会多一个,那个只要和根节点原创 2016-02-25 23:19:50 · 555 阅读 · 0 评论 -
POJ 3074 Sudoku(DLX+精确覆盖)
题意: 求解普通的数组,效率很高,DLX经典应用。 建模的方法可以看这个;戳这里代码://// Created by CQU_CST_WuErli// Copyright (c) 2016 CQU_CST_WuErli. All rights reserved.//#include <iostream>#include <cstring>#include <cstdio原创 2016-02-27 23:04:27 · 490 阅读 · 0 评论 -
HDU 4807 Lunch Time(费用流)
题意: 有k个人要从教室走到食堂,但是这两点之间的路的承载能力是有限的,所以如何走,能够让最后一个人到达食堂的时间尽量小。题意很清晰,恩,然并卵。 刚看肯定觉得是最大流或者是费用流,但是这两者都无法从时间上来考虑,也就是会忽略掉第一拨人到达终点的时间,所以是不行的。 但是有一点我们是需要知道的,那就是费用流是通过最短路径来增广的,而且有一个很重要的性质就是每一次找到的最短路的长度是上原创 2016-02-28 23:05:36 · 940 阅读 · 0 评论 -
Codeforces 676D Theseus and labyrinth(最短路)
题意: 给定一个迷宫,起点和终点,每一个可以走的格子上都有不同的门的情况,每次都可以选择到达周围符合条件的格子或者是让所有格子的门顺时针旋转一下,问你从起点到重点的最短距离。解法: 因为每次都是转90度,所以对于每个格子来说,都有四个状态,所以建立一个分层图,每层都代表个点的一种状态,然后直接BFS即可。代码://// Created by CQU_CST_WuErli// C原创 2017-01-18 16:08:10 · 521 阅读 · 0 评论 -
UVA 11324 The Largest Clique(SCC+dp)
题意: 让你在一个有向图中找到一个点的集合,是的这个点的集合中任意一堆点之间都有路劲相连。 一开始好像,就是先缩点,但是缩点之后生成的那个树,如何来找到一个最大的点集呢?考虑到这是一棵树,每个点都面临着选或不选的决策, 所以我们可以考虑利用树形dp来解决这个问题。代码://// Created by CQU_CST_WuErli// Copyright (c) 2016原创 2016-03-05 00:14:14 · 457 阅读 · 0 评论 -
POJ 2125 Destring the Graph(网络流)
题意: 跟你一个有向图,每次你可以删除一个点所有出边或者是入边,花费分别是w+,w-,问你怎么删可以把所有的边全部删掉并且花费最小。 啊,网络流的姿势实在太多,这个是最小点权覆盖,你可以想象,每一条边都会被一个点所覆盖,也就是删掉,所以我们把点拆成两个,边都会 被一个点覆盖,出边被出点,入边被入点覆盖,这样想就清楚了,至于最小点权独立集,我们只需要把出点连源点,入点连汇点,其他的按照原创 2016-03-05 00:07:04 · 755 阅读 · 0 评论 -
HDU 3572 Task Schedule
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3572题意:给你m个机器和n个任务,每个任务有处理该任务需要的时间,最早的开始时间和最迟的结束时间。我觉得这个题目还是值得思考的,首先,有一个关系,就是每个机器在每一天只能处理一个任务,这个条件其实很关键,这样就可以把机器和天数建立边,容量为1来限制,这样是不是瞬间就眼熟了?(其实我也是参考的别人的思路)原创 2015-09-08 22:15:28 · 381 阅读 · 0 评论 -
HDU 4725 The Shortest Path in Nya Graph
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4725这道题的题意就是给你n层,每一层有几个点,然后每个点可以转移到相邻层的点上去,要花费C的时间,在另外给你一些边,这些边可以相互转移,花费一定的时间,要求1好点到n号点的最短距离。题意不难理解,但是建图比较麻烦,虽然是一个很明显的分层图,但是由于有着层这个东西的限制,所以要考虑这个因素才行。有两种建原创 2015-09-10 22:40:21 · 520 阅读 · 0 评论 -
HDU 3416 Marriage Match IV
Description Do not sincere non-interference。 Like that show, now starvae also take part in a show, but it take place between city A and B. Starvae is in city A and girls are in city B. Every time st原创 2015-09-06 22:38:03 · 584 阅读 · 0 评论 -
HDU 4370 0 or 1
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4370```这道题目,如果不是在图论专题里面,真的看不出来是一道图论题,说明图论的思维还不够。首先分析那个矩阵的三个表达式,由于C矩阵类似于邻接矩阵,而最后要求的求和可以等价于走一段符合一定条件的路,使得所经过的边的权值总和最小,那么这条路就可以转化为一个类似于最短路的问题了。为什么会想到这个,有三原创 2015-09-08 15:09:32 · 608 阅读 · 0 评论 -
UVa 11721 Instant View of Big Bang
题意:就是让你在无向图中找负圈和所有能到达负圈的点,这个题目有一次加强了对spfa 的理解。首先反向建图,这样负环还是负环,spfa判负环是通过某一个点入队n次以上,那么我们每次找到负环是,就去通过bfs来找所有能到达的点,标记一下就行。代码://// Created by CQU_CST_WuErli// Copyright (c) 2015 CQU_CST_WuErli. All ri原创 2015-11-28 23:17:08 · 935 阅读 · 0 评论 -
HDU 2894 DeBruijin(欧拉回路)
题意:算是一个经典模型吧,其实爆搜可过,毕竟数据小,不过既然有高端做法就试试。因为需要走一圈,把所有的情况都走到,很明显就是欧拉回路,虽然当时我没看出来,其实是被吓到了。代码://// Created by CQU_CST_WuErli// Copyright (c) 2015 CQU_CST_WuErli. All rights reserved.//// #include<bi原创 2016-02-06 20:25:08 · 584 阅读 · 0 评论 -
CodeForces 543B Destroying Roads(最短路BFS)
题意:给你一个连通图,让你尽可能的删除边,是的两对起点终点之间的之间不超过一定的数字,题意还是很好懂得。先来说判断无解的情况,我们只需要看两点之间的最短路是否比规定时间长,就是误解的,因为你怎么删都不能满足条件。如果有解,我们只需要保留最短路就行了,但是这不是最优解,因为如果两条路可以有重叠的地方的话是可以删掉其他边的,所以我们就可以枚举重叠部分,然后更新答案即可。代码://// C原创 2016-02-02 22:19:15 · 579 阅读 · 0 评论 -
HDU 1162 Eddy's picture(MST)
裸MST,读懂题就行。贴个模板//// Created by CQU_CST_WuErli// Copyright (c) 2015 CQU_CST_WuErli. All rights reserved.//// #include<bits/stdc++.h>#include <iostream>#include <cstring>#include <cstdio>#incl原创 2016-02-02 22:36:56 · 333 阅读 · 0 评论 -
POJ 2516 Minimal Cost(最小费用最大流)
题意:有n个商店,m个供给站,k种物资,每一个供给站运行每种物资到每一个商店的价格都是不同的。首先每个商店对每种物资的需求也不同,让你安排一种方法,使得满足要求的同事运费最少。最小费用流的典型题目,但是有一个问题就是由于物品太多,如果一次性建一个大图的话,不仅建图繁琐,而且以网络流的玄学复杂度很容易T,所以我们可以对每一中物资进一个图跑一次最小费用流,最后相加就行了,因为每种物资之间是互原创 2016-02-02 22:44:01 · 450 阅读 · 0 评论 -
HUST 1017 Exact Cover(舞蹈链模板)
题意:题意就不多说了,标准的测舞蹈链的题目,花了一下午看了很多博客,终于看懂了原理,理解之后其实挺清晰地,本来想去看论文原文的,后来还是看了中文的翻译版,英文太难受了。推荐两个博客http://www.cnblogs.com/grenet/p/3145800.htmlhttp://blog.youkuaiyun.com/yysdsyl/article/details/4266876这两个讲的挺清晰的原创 2016-02-16 21:23:45 · 611 阅读 · 0 评论 -
HDU 3498 whosyourdaddy(DLX+A*||多重覆盖)
题意:题意就是让你选最少的步数是的每个点至少被覆盖一次,多重覆盖模板题。蛋疼的是,我把评估函数的辅助数组开大了,结果T的我不要不要的。看懂只好还是比较好做的。多重覆盖和精确覆盖的区别就是多重覆盖在删除的时候只删除列。因为行是决策,列是条件,当你选择一个决策时,其他的也会覆盖住这个。代码://// Created by CQU_CST_WuErli// Copyright (c) 2原创 2016-02-17 22:47:14 · 852 阅读 · 0 评论 -
HDU 4971 A simple brute force(网络流)
题意: 给你一些项目以及完成项目可以得到的收益,再给你项目和需要解决问题的关系,完成问题的顺序是要分先后的,问你按照什么顺序来可以让总 的预算最少。一开始看到这题的时候感觉建图很难受,知道是网络流,但是不知道要算什么,看了最大权闭包才知道,这算是落得最大权闭包。 有关最大权闭包的资料:戳这里 我们从源点向每个项目连边,流量为收益,所有的问题向汇点连边,流量为花费,然后再根据需求原创 2016-03-04 23:56:41 · 467 阅读 · 0 评论 -
Codeforces 687D Dividing Kingdom II (图论+并查集)
题意: 给你一张图,其中边按照序号排好,每次给你一个 l和r,让你用给定区间范围内的边生成一张图,然后把这个图中的点分成两边,在所有使用的边中,使得两边端点在同一个部分的边的最大值最小。解法: 我们可以很快的看出,如果是二分图的话,那么所有的边的两个端点都不会再同一个部分,那么也就是说如果生成的图不是二分图,那么才会存在这样的边,于是问题就转变成了如何找到所有的奇环的最小边的最大值。这里可原创 2017-02-02 21:38:21 · 611 阅读 · 0 评论