随笔分类 - 图论相关
摘要:题意:有N个点,给定M个集合,集合Si里面的点两两之间的距离都为Ti,集合里面的所有点数之和using namespace std;#define X first#define Y second#define pb(x) push_back(x)#define mp(x, y) make_pair(...
阅读全文
摘要:大致题意:在二维平面上,给一些圆形岛屿的坐标和半径,以及圆形船的位置和半径,问能否划到无穷远的地方去思路:考虑任意两点,如果a和b之间船不能通过,则连一条边,则问题转化为判断点是否在多边形中。先进行坐标变换,将船变到原点,以从起点到每个点的有向角作为状态,每条边的边权为这条边对有向角的改变量,那么点...
阅读全文
摘要:题意:无源无汇有上下界的可行流 模型思路:首先将所有边的容量设为上界减去下界,然后对一个点i,设i的所有入边的下界和为to[i],所有出边的下界和为from[i],令它们的差为dif[i]=to[i]-from[i],根据流量平衡原理,让出边和入边的下界相抵消,如果dif[i]>0,说明入边把出边的...
阅读全文
摘要:题意:给n个点,m条边,每次只能沿边走,花费为边权值,求从1出发经过所有其它点≥1次最后回到1的最小花费。思路:状压DP。先用Floyd得到任意两点间的最短距离,转移时沿两个点的最短路转移。此时的状态表示为dp[i][j]:“落脚点集合为i,最后停在j”的方案数;而不是“访问过的点的集合为i,最后停...
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=5348题意:给一个无向图,现在要将其变成有向图,使得每一个顶点的|出度-入度|#include#include#include#include#include#include#include#include#inc...
阅读全文
摘要:题意:给一个有向图,每个点有一个权值,从1个点出发,初始能量有100,每到达新的点,能量就会加上那个点的权值,当能量大于0时才能继续走,可以多次进入同一点。问能否到达目标点思路:如果没正权环,则直接优先队列bfs模拟走的过程即可,因为先到不会比后到的能量少,那过程其实就和dijkstra差不多,但根...
阅读全文
摘要:题意:给一个01矩阵,每次可以选一行或一列,打掉上面所有的1,求打掉所有的1所需的最小次数。思路:经典的模型了,二分图最小覆盖=最大匹配。所谓最小覆盖是指选最少的点关联所有的边。容易得到将行和列看成点,1看成边,那么就是选尽量少的行和列来关联所有的1,最小覆盖模型,用最大匹配做。可以选择匈牙利算法,...
阅读全文
摘要:题意:给一个n*m的地图,'m'表示人,'H'表示房子,求所有人都回到房子所走的距离之和的最小值(距离为曼哈顿距离)。 思路:比较明显的二分图最大权匹配模型,将每个人向房子连一条边,边权为曼哈顿距离的相反数(由于是求最小,所以先取反后求最大,最后再取反回来即可),然后用KM算法跑一遍然后取反就是答案
阅读全文
摘要:题意:给定每个人所喜欢的食物和饮料种类以及每种食物和饮料的数量,一个人需要一种食物和一种饮料(数量为1即可),问最多满足多少人的需要思路:由于食物和饮料对于人来说需要同时满足,它们是“与”的关系,所以建模时需要放在不同的层,另外如果把人放在根,食物和饮料依次放后面,则每个人会扩展出f*d个节点出来,...
阅读全文
摘要:题意:给一个n*m的矩形,往每个格子填0-k的数字,使得对第i行和为row[i],第i列和为col[i],问是否存在方案,方案是否唯一,如果方案唯一则输出具体方案。思路:首先根据问题提取对象,行、列、格子、数,只有数可以连接其它的对象。从源点向第i行连一条容量为row[i]的有向边,从第i行向第i行...
阅读全文
摘要:题意:有m台机器,n个任务,每个任务需要在第si~ei天之间,且需要pi天才能完成,每台机器每天只能做一个任务,不同机器每天不能做相同任务,判断所有任务是否可以做完。思路: 把影响答案的对象提取出来,得到以下几个:机器,任务,时间;需要用一个量把这三者联系起来,不难想到用工作量来表示。从源点向每个任...
阅读全文
摘要:题意:给定二分图,求添加的最多边数,使得添加之后还是二分图思路:如果原图可以分成X,Y两个点集,那么边数最多为|X||Y|条。由于|X|+|Y|==n,所以需要使|X|与|Y|尽量接近。先对原图进行染色,对每个连通块,求出它的两种颜色的点数差,并且交换染的颜色,染色方案依然成立。不妨设染色0和1,c...
阅读全文
摘要:相当于模板题了,用trie来完成字符串到数字的映射比map要快不少,令外可以考虑hash。运行时间对比:(1)(2)600ms左右 (3)3000ms左右(4)1500ms左右(1)O(n^2)的dijkstra:1234567891011121314151617181920212223242526...
阅读全文
摘要:裸最大流,求最大流一般步骤如下:(1)所有正向边权初始化为容量,反向边权初始化为0(2)找增广路(3)找到则进入(4),否则得到最大流并退出(4) 增广路上所有边减去最小边权,相应的方向边加上最小边权,然后返回(2)123456789101112131415161718192021222324252...
阅读全文
摘要:题意:有n*m个单位的农田,给定每个单位农田地势高低,现在需要灌溉所有农田,如果把水引入相邻的农田里需要的管道长度为两者的高度差。求最少的管道长度花费。思路:比较明显的最小生成树问题,相邻两点之间连一条边,边权为高度之差,求图的最小生成树即可。由于高度范围只有100,故可以直接类似hash表存了,无...
阅读全文
摘要:题意:给一个图,问能否给每个点分配一个实数值,使得存在一个数实数T,所有点满足:|value(i)| |value(u)-value(v)| >= T。(注意等价符号)思路:由性质可得,两相邻点的分配的值的符号相反,于是先对原图做一个二分图判定,如果是非二分图,则无解。对二分图染色后,假设colo...
阅读全文
摘要:题意:定义域属于一个集合S={0,1,...,n-1},求S的子集个数,满足以子集的元素为定义域的函数P(x)的值域等于子集本身。思路:以元素为点,x到P(x)连一条有向边,不难发现,如果有一个有向环,那么环上的元素构成的集合就满足要求。所以问题转化为求有向环的个数,由于有向环之间不可能有交点(同一...
阅读全文
摘要:题意:给一个边长为1的无向图,求删去最多的边使得从a到b距离 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13...
阅读全文
摘要:题意:如标题思路:对于奇环,一个二分图判定就ok了,有奇环非二分图。对于偶环,考虑环必定出现在双联通分量里面,可以先求出图的双联通分量,对于一个双联通分量,对于双联通分量里面的每个环,如果是偶环,则偶环已找到,否则假定存在多个奇环,则可以任选两个奇环,把共享边去掉,一定可以得到一个新偶环,这种情况下...
阅读全文

浙公网安备 33010602011771号