随笔分类 -  图论

摘要:"Wannafly挑战赛2_D Delete" Problem : 给定一张n个点,m条边的带权有向无环图,同时给定起点S和终点T,一共有q个询问,每次询问删掉某个点和所有与它相连的边之后S到T的最短路,询问之间互相独立(即删除操作在询问结束之后会立即撤销),如果删了那个点后不存在S到T的最短路,则 阅读全文
posted @ 2017-11-13 23:51 rpSebastian 阅读(398) 评论(0) 推荐(0)
摘要:题目大意 给出一个或与表达式,每个正变量和反变量最多出现一次,询问是否存在一种方案使得每个或式中有且仅有一个变量的值为1。 解题分析 将每个变量拆成三个点x,y,z。 y表示对应的正变量,z表示对应的反变量。 由S向每个点的x部连一条流量为1的边,表示该变量的某个正变量或反变量的取值为1。 由每个点 阅读全文
posted @ 2017-05-01 00:03 rpSebastian 阅读(313) 评论(0) 推荐(0)
摘要:题目大意 有n种物品,m种建筑,p个人。 n,m,p∈[1,20] 每种建筑需要若干个若干种物品来建造。每个人打算建造一种建筑,拥有一些物品。 主角需要通过交易来建造自己的建筑,交易的前提是对方用多余的物品来换取自己需要的物品。 询问主角是否能建造成功自己的建筑,并给出方案。 解题分析 超级恶心的读 阅读全文
posted @ 2017-04-30 23:45 rpSebastian 阅读(392) 评论(0) 推荐(0)
摘要:Problem One-Way Reform 题目大意 给一张n个点,m条边的无向图,要求给每条边定一个方向,使得最多的点入度等于出度,要求输出方案。 解题分析 最多点的数量就是入度为偶数的点。 将入度为奇数的点每两个组成一队,连一条无向边,之后求出欧拉回路即可。 参考程序 1 #include < 阅读全文
posted @ 2016-10-06 16:29 rpSebastian 阅读(570) 评论(0) 推荐(0)
摘要:Problem King's Inspection 题目大意 给一张n个点m条边的无向图,问是否存在一条欧拉回路。 n<=10^5, 0<=m<=n+20。 解题分析 注意到数据范围m<=n+20,可以想象若存在一条欧拉回路,那么图的形状必定是一条长链再加上20条边。 将连续的一段入度和出度均为0的 阅读全文
posted @ 2016-08-30 23:34 rpSebastian 阅读(491) 评论(1) 推荐(0)
摘要:Probelm Terrorists 题目大意 给一张n个点,m条边的无向图。共有q个询问,每次询问u到v的最短路。 n <= 100000 , n-1 <= m <= n + 50 , q <= 50000。 解题分析 注意到m的范围比较特殊,所以可以看成是一棵树加上若干条非树边。 将所有的非树边 阅读全文
posted @ 2016-08-26 20:24 rpSebastian 阅读(286) 评论(0) 推荐(0)
摘要:Problem Break up (CF700C) 题目大意 给一张n个点,m条边的无向图,有边权,和起点S,终点T。 (n<=1000 , m<=30000) 要求最多割掉2条边,使得S到T不连通。 输出最小代价以及方案。 解题分析 如果只是割掉1条边,那么就是求割边了。 如果要割掉2条边,一个自 阅读全文
posted @ 2016-08-05 16:41 rpSebastian 阅读(363) 评论(0) 推荐(0)
摘要:Poroblem Redraw Beautiful Drawings (HDU4888) 题目大意 一个n行m列的矩形,只能填0~k的数字。 给定各行各列的数字和,判定有无合法的方案数。一解给出方案,多解输出给定字符串。 解题分析 一个经典的网络流建图。 由S向行连流量为该行数字和的边,由列向T连流 阅读全文
posted @ 2016-07-30 23:27 rpSebastian 阅读(296) 评论(0) 推荐(0)
摘要:Problem Jump (HDU4862) 题目大意 给定一个n*m的矩形(n,m≤10),每个矩形中有一个0~9的数字。 一共可以进行k次游戏,每次游戏可以任意选取一个没有经过的格子为起点,并且跳任意多步,每步可以向右方和下方跳。每次跳需要消耗两点间的曼哈顿距离减一的能量,若每次跳的起点和终点的 阅读全文
posted @ 2016-07-28 21:28 rpSebastian 阅读(459) 评论(0) 推荐(0)
摘要:Problem String problem (HDU5772) 题目大意 给定一个由数字组成的字符串(n<=100),挑选出一些字符组成一个新的字符串。 字符串的价值: sigma w[id(i)][id(j))] (i !=j) id(i)为某字符在原串中的位置,w[][]为给定矩阵。 字符串的 阅读全文
posted @ 2016-07-28 20:24 rpSebastian 阅读(709) 评论(0) 推荐(0)
摘要:Problem A simple brute force problem (HDU 4971) 题目大意 有n个项目和m个问题,完成每个项目有对应收入,解决每个问题需要对应花费,给出每个项目需解决的问题以及各问题间的依赖关系,求最大利润。 解题分析 最大权闭合子图 用来解决一下有依赖关系的问题。 X 阅读全文
posted @ 2016-07-27 21:47 rpSebastian 阅读(364) 评论(0) 推荐(0)
摘要:Problem King's Pilots (HDU 5644) 题目大意 举办一次持续n天的飞行表演,第i天需要Pi个飞行员。共有m种休假计划,每个飞行员表演1次后,需要休假Si天,并提供Ti报酬来进行下一次表演。刚开始拥有k个飞行员。也可以招募飞行员来进行表演(数量无限),需要提供报酬q,在p天 阅读全文
posted @ 2016-07-23 21:19 rpSebastian 阅读(358) 评论(0) 推荐(0)
摘要:Problem Jam's Store (HDU5619) 题目大意 有m个服务员,和n个顾客,给出每个服务员招待每个顾客的时间,每个服务员在同一时间只能服务一个顾客,询问所有顾客完成服务的最少时间。 解题分析 第一反应就是用费用流来做。 题目难度在于每个服务员在同一时间只能服务一个顾客。考虑把每个 阅读全文
posted @ 2016-07-23 10:56 rpSebastian 阅读(197) 评论(0) 推荐(0)
摘要:#include #include #include #include #include using namespace std; #define maxn 2008 #define maxm 2000008 #define INF 2000000000 int lt[maxn],LT[maxn],sum=1,SUM=1; int h[maxn]; int s,t,k,n,m; b... 阅读全文
posted @ 2015-06-26 20:45 rpSebastian 阅读(211) 评论(0) 推荐(0)
摘要:1 #include 2 #include 3 #include 4 #include 5 #define inline __attribute__((optimize("O2"))) 6 using namespace std; 7 8 #define maxn 100008 9 #define maxm 1000008 10 #defin... 阅读全文
posted @ 2015-06-24 14:35 rpSebastian 阅读(341) 评论(0) 推荐(0)
摘要:1 const INF=2000000000; 2 const maxn=4008; 3 var r:array[0..maxn] of longint; 4 eg:array[0..1000008] of record u,v,w,nt:longint; end; 5 el:longint; 6 lt:array[0..maxn] of long... 阅读全文
posted @ 2015-06-12 17:46 rpSebastian 阅读(244) 评论(0) 推荐(0)
摘要:type arr=record u,v,w,nt:longint; end; var i,j,m,n,x,y:longint; ans:int64; a:array[0..200008] of arr; fa:array[0..200008] of longint; function find(x:longint):longint; beg... 阅读全文
posted @ 2015-03-10 12:51 rpSebastian 阅读(274) 评论(0) 推荐(0)
摘要:var b,f:array[0..100000] of longint; s,t,i,j,n,m,x,y:longint; l,h:array[0..1000]of longint; a:array[0..1000,0..1000]of longint; procedure bfs; var i,head,tail,x,y:longint; begin fillchar(b,... 阅读全文
posted @ 2015-02-24 10:19 rpSebastian 阅读(172) 评论(0) 推荐(0)
摘要:1 type edge=record 2 nt,u,v:longint; 3 end; 4 const maxn=100008; 5 maxm=200008; 6 var eg:array[0..maxm*2] of edge; 7 lt:array[0..maxn] of longint; 8 dfn,low,... 阅读全文
posted @ 2015-02-10 21:09 rpSebastian 阅读(191) 评论(0) 推荐(0)
摘要:真是语死早,题目看了两遍才看懂。 按照题目要求建边,从'Z'开始跑最短路即可。 阅读全文
posted @ 2014-12-14 22:02 rpSebastian 阅读(198) 评论(0) 推荐(0)