图论
tjdrn
这个作者很懒,什么都没留下…
展开
-
zoj 1455(差分约束)
题目链接:http://210.32.0.220/onlinejudge/showProblem.do?problemCode=1455典型的差分约束题目, 不等式很好列但此题求的是满足约束的最小值, 原来看到网上有最大值求最短路, 最小值求最长路的说法但本人觉得有点烦, 所以都转化成求最短路, 所以要求加负号的最大值, 注意超级点的确立, 细节详见代码。#include #原创 2013-07-23 00:16:01 · 1175 阅读 · 1 评论 -
poj 4045 (树形dp)
题目链接去年金华邀请赛的B题, 其实就是个挺简单的树上的统计 #include #include #include #include #include #include using namespace std;const int N = 50005;const int M = N << 1;typedef long long LL;const LL INF原创 2013-08-12 11:05:56 · 683 阅读 · 0 评论 -
hdu 4665 (dfs / 2-SAT)
题目链接多校第六场的题目, 比赛时没什么想法, 后来看GYZ神犇的解题报告里用的是O(n ^ 2)的2 - SAT解法, 但本弱菜还是没想到如何构图, 后来看别人都是用dfs过的, 自己写了一版觉得还是挺好写的, 而且速度也很快, 但复杂度不知如何分析, 一开始觉得dfs应该会T的, 毕竟需要递归2000层, 后来想了想觉得这题有一定的特殊性, 因为题目只要求输出一组解, 而且如果相同原创 2013-08-09 20:30:36 · 749 阅读 · 0 评论 -
hdu 3599(网络流 (不相交路径))
题目链接题意就是求给定两点间有多少条不含重复边的最短路, 先求出最短路然后构出最短路径图即保留原图中div[v] == dis[u] + w(u, v)的边然后再跑一遍最大流即可, 注意n = 1时答案为0#include #include #include #include #include #include #include #include usin原创 2013-08-13 10:14:41 · 1401 阅读 · 0 评论 -
zoj 3165(二分图最大点权独立)
题目链接模型很明显, 但要注意输出解的方式, 需要先找出割边, 确定最小点权覆盖然后再求补集。#include #include #include #include #include #include #include #include using namespace std;const int N = 205;const int M = N * N * 2原创 2013-08-13 23:37:21 · 702 阅读 · 0 评论 -
poj 3281 (拆点网络流)
题目链接下周要给学弟讲网络流了, 最近复习了一下发现了这题,这道题主要考察的就是构图, 如果只有食物或者饮料那么这题就很水了, 由于每一头牛都要有和一种食物还有一种饮料匹配那么可以考虑将牛拆成两个点然后左边和食物相连右边和饮料相连, 食物和源点相连, 饮料和汇点相连。#include #include #include #include #include #inc原创 2013-08-14 00:42:55 · 869 阅读 · 0 评论 -
hdu 4674 (缩点 + 倍增LCA)
题目链接当时看到这道题目有点想法后来看到59交0AC, 就知道肯定有不少trick,赛后看了题解才知道原来有这么多种情况。。。其实所有的情况大致可以这么划分, u 和 v是否相同, u, v不同时, 设u所在环是cu, v所在环是cv, p所在环是cp, 根据cu == cv再划分出两种cu != cv时再根据cu == cp || cp == cv再划分出两种情况, 基本就是这样原创 2013-08-15 09:07:24 · 1230 阅读 · 0 评论 -
hdu 4670 (树的分治)
题目链接 经典的男人八题的改编题目, 从边权到了点权, 而且每个节点有30个三进制的状态, 但其实做法还是和原来大同小异的在处理子问题时需要用到一个map, 复杂度为n * log(n) * log(n) * 30#include #include #include #include #include #include #include using namespac原创 2013-08-16 10:30:19 · 1107 阅读 · 0 评论 -
spoj FTOUR2(树的分治)
题目链接QZC树的分治论文第二道例题, 自己想了想觉得没什么思路, 后来看了论文中的解法看到中间时想到了一个线段树优化dp的解法, 论文中也提到的令dp[L] 标示从当前根结点向下经过L个crowded节点的最长路径值,在进行分治时用两个dp数组, dp1表示当前根节点前i - 1棵子树的dp值, dp2表示第i棵子树的dp值,用线段树维护dp1的值,我们每次dfs一个子树时得到dp2原创 2013-08-17 11:18:36 · 1161 阅读 · 0 评论 -
SRM 584 div1 lev3(最小树形图)
题目链接闲来无聊在TC上搜罗图论题目, 无意中发现了这题, 此题构图其实挺好想,我一开始想的是费用流后来构完图才发现是个最小树形图。。。 只是觉得div1 lev3的题目不应只有这种程度吧。。。。#include #include #include #include #include #include #include #include #include #inclu原创 2013-08-05 22:55:11 · 793 阅读 · 0 评论 -
hdu 4606(线段相交 + 最短路 + 最小路径覆盖)
题目链接多校第一场的题目, 这题很综合, 考察了很多点, 首先对于这种二维平面上带有障碍的最短路在LRJ的白书上有提到, 然后对于后一部分由于城市的占领有顺序所以得到了一个DAG, 然后再二分相邻两点间的最长距离每次用最小路径覆盖判断人数是否小于等于给定人数就可以了。。。。#include #include #include #include #include #incl原创 2013-08-12 10:45:04 · 729 阅读 · 0 评论 -
hdu 3488(费用流)
题目链接同这题#include #include using namespace std;const int N = 2005;const int M = 10005 << 3;typedef int LL;const LL INF = (int)1e9;struct Cost_Flow { struct Edge { LL cap, flow,原创 2013-08-19 21:17:04 · 623 阅读 · 0 评论 -
hdu 3499 (最短路)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3499题意:给定一个有向带权图,点数n 解法: 做两遍单源最短路, 一遍正向,一遍反向,枚举每条边, 将其权值减半,所求答案即为min{dis[s → u] + dis[t → v] + w / 2}, 复杂度为最短路复杂度。#include #include #include原创 2013-07-24 13:52:56 · 680 阅读 · 0 评论 -
uva 11082(网络流)
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=&problem=2023&mosmsg=Submission+received+with+ID+12094940题意是已知一个矩阵的行数和列数和前i行的的和已经前j列的和, 矩阵每个元素的值都原创 2013-07-24 11:53:23 · 743 阅读 · 0 评论 -
poj 3680(网络流)
题目链接:http://poj.org/problem?id=3680经典的区间k覆盖模型, 费用流求解。#include #include #include #include #include #include #include #include using namespace std;typedef int LL;const LL INF = 1000原创 2013-07-24 21:17:28 · 591 阅读 · 0 评论 -
hdu 2242 (Tarjan + 树形dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2242挺基础的一个图论dp综合题目, 开了IO以后暂时rank1。。。。#include #include #include #include #include #include #include #include #include #include using nam原创 2013-08-04 15:05:49 · 618 阅读 · 0 评论 -
poj 3160(强连通缩点 + dp)
题目链接:http://poj.org/problem?id=3160很陈旧的题目吧算是, 缩点后得到DAG, 然后就是带点权的最长路, 唯一值得注意的是一开始的图的点权可能是负的, 由于可以经过某个点但不取该点的权值, 所以可以把负的权值当做0来处理。。。#include #include #include #include #include #include原创 2013-08-04 21:14:28 · 760 阅读 · 0 评论 -
SRM 573 div1 lev2(状态图上的最短路)
题目链接从一个神牛博客上无意中发现的题目, 由于TC上的图论题目本来就少, 所以就好奇的想做做, 题意就是给定一个50个点的图, 每个点有一个高度, 从一个点u到另一个点v的条件是u, v直接相连, 并且h[u] >= h[v],每个点的高度可以改变代价为改变前后高度差的绝对值, 求从点0到点n - 1的最小代价。一开始没什么思路, 后来看了神牛的解法后发现这题其实就是lrj白书上提到的状原创 2013-08-05 21:04:21 · 1029 阅读 · 0 评论 -
zoj 1232(Floyd预处理 + 状态图上的最短路(好题))
题目链接思想挺好的一个题目, 跟这个题做法类似, 但要多一步预处理, 详见代码。。。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-08-06 01:55:45 · 781 阅读 · 0 评论 -
poj 3164(最小树形图)
题目链接最小树形图的模板题, 原理和代码都是从这位神牛的博客http://blog.csdn.net/wsniyufang/article/details/6747392学到的。。#include #include #include #include #include #include #include #include #include #include #i原创 2013-08-05 22:45:46 · 660 阅读 · 0 评论 -
hdu 3435(费用流)
题目链接算是偶然发现的一种题型吧, 这种题目的最明显特征就是要求每个点都在一个或几个不含重复边的环上, 然后一般都是求这些环的最小或者最大权值和, 具体做法就是拆点将一个点u拆成点u 和 u' ,源点连每个u容量为环的个数u'点汇点容量也为环的个数, 若有边 则需要连u和v', 大致就是这样吧。。。。#include #include using namespace std;原创 2013-08-19 21:08:21 · 836 阅读 · 0 评论 -
hdu 4635(强连通分量)
题目链接不难得到如下结论:如果原图不是强连通, 那么最优解肯定是只剩两个强连通分量且每个分量内都为完全图, 可以列出数学表达式不难发现最后的结果只和两个分量中的点数的乘积有关, 由于两者的和一定使两者的差尽可能大, 但一个点如果既有出度又有入度就不能单独将它作为最后的一个点, 所以我要考虑只有出度或者入度的点。#include #include #include #inclu原创 2013-08-25 13:40:24 · 750 阅读 · 0 评论