图论
hnust_W_unc_h
这个作者很懒,什么都没留下…
展开
-
BZOJ2125 最短路(圆方树)
题目链接思路: \ \ \ \ 关于静态仙人掌的问题,建立出圆方树比较好求解。求出来之后处理每个圆点方点的情况,原来的是树边直接处理,环边的话方点连向环上每个圆点一条边,权值为每个节点到环的父亲节点的最短距离。然后倍增预处理,查询的时候,如果lcalcalca是圆点直接输出,否则两个点是环上的点,...原创 2018-07-05 19:39:03 · 367 阅读 · 0 评论 -
Gym101608K Running Threads(有界最小费用流)
题源 题意: \ \ \ \ \ \ 有kkk个程序分配了若干个线程任务,每个程序完成一定的线程时会打印出任务进度,任务不会超过一次被执行而且属于同一个程序的任务进度一定是严格递增的,现在kkk个程序打印出nnn个任务进度,问最少/最多还有多少线程任务...原创 2018-04-17 20:01:12 · 201 阅读 · 0 评论 -
HDU6184 Counting Stars(三元环计数)
题意: \ \ \ \ \ \ \ \ 一幅nnn个点mmm条边的无向图, 问有多少对有公共边的单元环。 思路: &n原创 2018-04-10 19:40:18 · 253 阅读 · 0 评论 -
牛客练习赛14
B - 区间的连续段 \ 思路: \ \ \ \ \ 可以先预处理出每个左端点能向右最远扩展到的位置, 这样就是固定左端点分成一段的最大长度, 然后可以用倍增STSTST表记录固定左端点,分成2k2k2^{k}段k=0,1,2,3.....k=...原创 2018-04-02 21:20:55 · 312 阅读 · 7 评论 -
团体程序设计天梯赛 周游世界(最短路)
思路: 写了好多版本, 都是按照点的关系入队, 不知道怎么会错就是看该点是否是换乘点。。。。。后来按照边的关系入队之后就过了, dis[ci][si]:源点到si这个站点时,最后经过的一条路线是属于公司ci的,然后就是记录两个信息:经过的站点数还有换乘的次数, 按照最短路那样更新就好了。#include<bits/stdc++.h>const int maxn = 1e2 + 5;...原创 2018-03-13 23:09:12 · 398 阅读 · 0 评论 -
BZOJ 2001 City城市建设 (CDQ分治 + 并查集)
/**思路: 参照 http://blog.sina.com.cn/s/blog_6e63f59e0101blum.html主要想法就是solve(l, r)的时候, 把区间[l, r]修改的边先置为正无穷,找出一定不要的边,之后恢复状态置为负无穷,找出一定要的边,然后递归解决solve(l, mid), solve(mid + 1, r)*/#include<bits/stdc+...原创 2018-03-03 20:41:24 · 285 阅读 · 0 评论 -
HDU4871 Shortest-path tree (树分治)
/**题意:n个点m条边的图,以1为根节点生成一棵最短路树,要求1到每个点的最短路字典序最小。之后,在最短路树上,找一个有k个点的简单路径,问这样的简单路径最长是多少,共有多少条。思路:树分治,生成最短路树后,找出每一层的重心,k个点的最长路径要么经过重心,要么没经过重心,没经过重心的递归解决,经过重心的,假设重心是x, 剩余的子树为x1, x2, ..., xn,假设目前求到经过重心...原创 2018-02-23 21:58:54 · 252 阅读 · 0 评论 -
HDU5354 Bipartite Graph (CDQ分治 + 并查集)
/**题意:n个点m条边的无向图,问删除1~n其中一个点能否使图变为二分图思路:CDQ分治 + 并查集, 要使图是二分图,可以用黑白染色图中的点,相邻的两点颜色不能相同,solve(l, r)代表删除区间(l, r)中的所有点剩余的图是否是二分图,那么solve(l, mid)的时候,要将(mid + 1, r)中的所有点加入集合,对于即将加入的点,先假设全部为黑色点,遍历它的所有边,对...原创 2018-02-23 11:31:14 · 260 阅读 · 0 评论 -
HDU5361 In Touch(最短路 + 线段树)
/**题意:一条n个点,第i个点可以到达[i - Ri, i - Li], [i + Li, i + Ri]的任意一个点,花费为Ci,问第1个点到其他各点的最小花费思路:Dijkstra + 线段树维护,遇到要更新的data值的时候, 如果data大于等于线段树该节点的最大值,则不更新,如果小于该节点的最小值,则这个区间的每个点更新,然后放进优先队列,线段树维护的是1到区间[l, r]最...原创 2018-02-21 16:52:42 · 271 阅读 · 0 评论 -
HDU5352 MZL's City(最小费用流)
/**题意:一个国家有N个城市,该国家经常发生地震,地震之后可能毁坏城市,城市可能也会重建,重建之后城市不再会被毁坏,一年之内最多重建K个城市,现在知道有M年的事件,有三种:1. 重建与x能通过道路直接或者间接连接到的城市2. 城市x和城市y之间连接一条道路3. 发生地震,地震毁坏p条道路,道路连接的没有重建的城市会被毁坏问你M年之后最多建立的多少个城市,还需要输出每个1操作在当时重建...原创 2018-02-11 15:34:12 · 218 阅读 · 0 评论 -
HDU5348 MZL's endless loop(欧拉回路)
/**MZL's endless loop题意:n个点m条边的无向图,可能包含自环和重边,现在要求你把它改为有向图, 使得每个的出度和入度的差的绝对值 <= 1思路:出度入度之差<=1, 很容易想到欧拉路,欧拉路的模型刚好满足这个条件,但是现在并不需要把它变成欧拉路,首先我们发现如果图中的情况是这样的话:图连通 而且 每个点的度数都是偶数或者只有两个点是奇数,那就直接是欧拉路...原创 2018-02-11 15:09:35 · 191 阅读 · 0 评论 -
Codeforces 825G Tree Queries(DFS)
/**Codeforces 825G Tree Queries题意:一棵树开始全部节点为白色,有m个操作,操作有两种:1 x 将x的节点变为黑色(第一个操作一定是1)2 x 查询x到某个黑色节点的简单路径上的标号最小的节点操作给出的是操作类型(1和2) 还有z,给出的不是x,x = (z + last) % n + 1其中last为查询操作的上一次的结果,初始时last = 0思原创 2017-08-14 19:18:05 · 334 阅读 · 0 评论 -
HDU 6064 RXD and numbers(BEST定理)
/**HDU 6064题意:有一个序列A,每个值都在[1,m]之间,且A1=An=1,对每个1 <= x <= m,A中一定有一个位置出现过x, 现有一个矩阵D,其中D中(x,y)的位置的值表示在序列中Ai=x, Ai+1=y中i的个数,现在只知道矩阵D,问A的有效序列个数,很显然n的值是D矩阵中所有的值加起来在加1思路:Ai=x,Ai+1=y,表示y是紧接着在x之后出现,联想到图上的原创 2017-08-02 17:38:25 · 410 阅读 · 0 评论 -
ZOJ2676 Network Wars(网络流 + 01分数规划)
题意: \ \ \ \ nnn个点mmm条边的无向图,每条边有一个权值cicic_i,要找111到nnn的一个割集CCC,使得: ∑e∈Cwe|C|∑e∈Cwe|C|\frac{\sum \limits_{e \in C} w_e}{|C|} 最小,求这些割边。 思路:  ...原创 2018-04-12 12:28:26 · 270 阅读 · 0 评论 -
SPOJ839 Optimal Marks(最小割)
题意: \ \ \ \ 给出nnn个点mmm条边的无向图,其中一些点已经有标号,定义一条边的权值是该边两个端点的标号异或值,剩余没有标号的点要你去给它标号, 问这个图的所有边权的最小总和是多少。思路: &原创 2018-04-12 18:36:04 · 198 阅读 · 0 评论 -
BZOJ1497 [NOI2006]最大获利(最大权闭合图)
思路: \ \ \ \ 胡伯涛论文里面的题目,了解最大权闭合图的求法,因为第iii个用户群在中转站aiaia_i和中转站bibib_i中通讯获益cicic_i,但是能够获益cicic_i的条件是aiaia_i和bibib_i中转站已经建立,那么可以建立有向边,这种边的容量无穷大,中转站aaa建立的话和...原创 2018-04-13 11:09:07 · 158 阅读 · 0 评论 -
计蒜客 百度地图的实时路况(cdq分治+floyd)
题目链接思路: \ \ \ \ floydfloydfloyd的本质是不断加入中转点来更新两点间的最短路,要求不经过xxx点的最短路,也就是中转点没有xxx,可以对xxx分治,solve(l,r):solve(l,r):solve(l, r):当[l,r][l,r][l,r]的点都不经过的时候两点...原创 2018-06-19 18:01:51 · 618 阅读 · 0 评论 -
BZOJ1023 [SHOI2008]cactus仙人掌图(圆方树)
题目链接思路: \ \ \ \ 圆方树学习中。。。树边还是那样处理,对于环的话这个可以知道一个点不会绕远路去另一点,所以应该和环的一半的距离以内的点取直径最大值,单调队列处理就行了。 #include<bits/stdc++.h>typedef long long ll;co...原创 2018-07-01 11:57:05 · 337 阅读 · 0 评论 -
BZOJ4316 小C的独立集(圆方树dp)
题目链接思路: \ \ \ \ 学习圆方树中。。。。代码很烂。就是类似树型dp,不过这里有环,如果是树边直接树形dpdpdp处理,否则求环上的最大独立集,类似基环树。更新的时候用方点去更新圆点的dpdpdp值。 #include<bits/stdc++.h>typedef lo...原创 2018-06-30 21:02:18 · 386 阅读 · 0 评论 -
POJ1486 Sorting Slides(二分图匹配必须边)
题目链接题意: \ \ \ \ 有nnn个矩形nnn个数字,给出矩形范围和数字坐标,每个数字只能匹配一个矩形,问哪些匹配是固定的。 思路: \ \ \ \ 先求二分图最大匹配,求出原创 2018-06-17 10:34:11 · 253 阅读 · 0 评论 -
BZOJ2127 happiness(最小割)
题目链接思路: \ \ \ \ 论文题。。最大化收益, 可以转化为最小化损失收益,用最小割模型:如果共同选择的只有一种情况的话, 那么可以直接源点连向每个同学,容量为选理科的喜悦值,每个同学连向汇点,容量为选文科的喜悦值,然后相邻的同学连接双向边,容量为他们共同选择的喜悦值。 但是现在共同选择的喜...原创 2018-05-08 15:51:31 · 205 阅读 · 0 评论 -
CodeChef Course Selection(最小割)
题目链接题意: \ \ \ \ 有nnn项课程,每项课程可能在mmm个学期中的其中至少一个学期开设,对应得到的分数xxx,每项课程必须也只能选一次,还有一些完成课程的前后关系,为完成这些课程最大的得分。 思路: &原创 2018-05-08 12:23:28 · 288 阅读 · 0 评论 -
PowerOJ 最长递增子序列问题(网络流)
思路: \ \ \ \ 先处理出dp[i]:dp[i]:dp[i]:以第iii个元素结尾的最长上升子序列的长度。然后只能用一次的,每个点拆成入点和出点,能从上一个状态转移过来的连一条容量为111的边,源点连向dp[i]=1dp[i]=1dp[i]=1的iii容量为111,dp[i]=ansdp[i]=...原创 2018-05-05 21:42:36 · 326 阅读 · 0 评论 -
LA3523 Knights of the Round Table(双连通分量)
题意: \ \ \ \ nnn个骑士和mmm组关系,每组关系表示两个骑士相互憎恨,相互憎恨的骑士不能在参加一场会议相邻着坐,而且每次会议参加的人数必须为奇数(⩾3⩾3\geqslant 3),问多少骑士一定不能参加会议。 思路: &nb原创 2018-05-05 17:12:05 · 157 阅读 · 0 评论 -
ZOJ1015 Fishing Net(弦图判定)
题源题意: \ \ \ \ nnn个点mmm条边的无向图,判断其是否是弦图。 思路: \ \ \ \ 这个是判断弦图的裸题, 可以看陈丹琦的ppt。 #include&a原创 2018-05-03 19:55:36 · 210 阅读 · 0 评论 -
Gym101612H Hidden Supervisors(贪心 + 匹配)
题目链接 题意: \ \ \ \ 一棵以111为根nnn个节点的树,一些节点的父亲已知,现在你要设置这些父亲节点未知的节点的父亲,使得这棵树的父亲节点−−-儿子节点这样的匹配最大。 思路: &原创 2018-04-24 20:26:01 · 457 阅读 · 0 评论 -
SGU252 Railway Communication(二分图最大权匹配)
题目链接 题意: \ \ \ \ 某国有nnn个城镇,mmm条单向铁路。每条铁路都连接着两个不同的城镇,且该铁路系统中不存在环。现需要确定一些列车运行线,使其满足: \ \ \ \ 1原创 2018-04-24 15:52:08 · 220 阅读 · 0 评论 -
POJ3155 Hard Life(最大密度子图)
题意: \ \ \ \ \ \ \ \ nnn个点mmm条边的无向图,现在要选择一个子图使得边的数量和点的数量的比值最大化。 思路: &n原创 2018-04-13 18:43:01 · 223 阅读 · 0 评论 -
CSU 1805 Three Capitals(BEST定理)
题意:给你三个点A,B,G,AB之间有a条双向边,AG之间有b条边,BG之间c有条边问你从A出发然后回到A的方法个数,要求走过所有的边,即求欧拉回路的个数 思路:从A出发回到A,如果是有向边,那么即求有向图的欧拉回路个数,可用best定理求,所以这里考虑将无向图转化为有向图,有向图的欧拉回路中每个顶点的入度一定等于出度,可以在AB之间枚举A的入边,那么其他的所有情况都能求出来了,原创 2017-07-18 16:28:45 · 625 阅读 · 0 评论 -
华中农业大学第五届程序设计大赛网络同步赛 C Friends
/**Problem C Friends题意:给n个人,有n-1个朋友关系,形成一棵树,如果两个人能够通过不超过5个人可以联系到,那么那两个人也是朋友,问你每个人有多少个朋友,比如(1-2-3-4-5-6-7-8),1可以联系到2 3 4 5 6 7,所以1有6个朋友思路:先对树进行dfs搜索形成有向树,根节点为1(任意),在设son[o][i]表示以o为节点在通过恰好i个人联系可以成原创 2017-04-23 21:42:32 · 847 阅读 · 0 评论 -
Uva 11248 Frequency Hopping(最大流)
题意:给定一个有向网络,每条边均有一个容量。问是否存在一个从点1到点N,流量为C的流。如果不存在,是否可以恰好修改一条弧的容量,使得存在这样的流。思路:先跑一次最大流,如果结果 >= C那么结果是可行的,否则,如果存在某条边满足条件,那么那条边一定是割边,再对求完最大流后的割边枚举,看条件是否满足,再次求最大流的时候需要保存第一次求完最大流后的结果#include#i原创 2016-10-15 13:58:22 · 340 阅读 · 0 评论 -
HDU5961 传递(bfs)
题意:中文题。。思路:要满足a -> b, b -> c且有a -> c的一条路,即图里面从任意点出发,没有长度大于1的路径长度,对每个点bfs一次,如果有长度大于1的路,就不是,直接返回#include#include#include#include#include#includetypedef long long ll;const int maxn = 2017;原创 2016-11-05 20:19:22 · 369 阅读 · 0 评论 -
LA 3231 Fair Share(网络流 + 二分)
题意:m个任务n个处理器,一个任务只能在可供运行的两个机器中的其中一个上运行,问怎样分配使得任务最多的机器尽量少思路:把任务和可以选择的机器连边,容量为1,建立源点汇点s, t,s到每个任务的容量为1,对于机器到汇点的容量二分答案 #include#include#include#include#include#includeconst int maxn = 2 *原创 2016-10-14 17:03:14 · 372 阅读 · 0 评论 -
POJ 3169 Layout(差分约束系统)
题意:一行母牛,编号为1~N,母牛可能相互喜欢或者相互不喜欢,相互喜欢的牛他们之间的距离控制在D内,相互不喜欢的牛他们的距离控制在D外,问母牛1和N的最大距离可能是多少,如果不存在满足条件的输出-1,如果最大距离无限制输出-2,否则输出最大距离思路:设d[i]编号为i的牛的坐标,则有:相互喜欢的牛A和B:d[B] - d[A] 相互不喜欢的牛:d[B] - d[A] >=原创 2016-09-28 18:17:16 · 242 阅读 · 0 评论 -
POJ 1275 Cashier Employment(差分约束系统+二分)
题意:一家店给出每个时间段(0:00 - 23:00)需要的员工数,再给出n个员工的申请雇佣时间段,每一个员工可以连续工作8小时,问一天最少需要雇佣多少员工思路:设di : 开始到第i时间刻雇佣的人数一共多少人,则有:0 d[i] - d[i - 8] >= R[i] (i >= 8 时)d[i] - d[i + 16] >= R[i] - answer (i d[24] -原创 2016-09-28 17:09:52 · 284 阅读 · 0 评论 -
HDU5934 Bomb(强连通分量分解)
题意:给出n个炸弹坐标、爆炸范围、爆炸费用,如果某一个炸弹在另一个炸弹的爆炸范围内(上),那么该炸弹也能爆炸,问引爆所有炸弹最小的费用思路:强连通分量分解,将所有点缩点,然后引爆所有入度为0的点即为最小费用#include#include#include#includetypedef long long ll;const int maxn = 1e3 + 10;原创 2016-11-04 16:40:02 · 245 阅读 · 0 评论 -
HDU 1960 Taxi Cab Scheme(最小路径覆盖)
题意:给出m个人坐出租车的出发时间,出发点和到达点,出租车在客人出发前至少1分钟需要到达出发点等待客人,问最少需要多少辆出租车思路:明显的最小路径覆盖,而时间是一个天然的序,建立二分图,求出最大匹配,二分图顶点数 = 最大匹配 + 最小路径覆盖#include#include#include#include#includeconst int maxn = 510;原创 2016-10-13 11:35:58 · 245 阅读 · 0 评论 -
POJ 2771 Guardian of Decency(最大独立集、二分图匹配)
题意:老师要带一些人出去,要求这里面任何两个人之间不会萌生爱意思路:有某种关系的人相互连边,很明显就是求最大独立集,而这里只有男生女生两种,故这是二分图匹配问题,因为二分图中,最大独立集 + 最小顶点覆盖 = 顶点数直接套匈牙利算法模板就行#include#include#include#include#include#include#includecon原创 2016-10-12 20:55:10 · 231 阅读 · 0 评论 -
Uva 1411 ants(KM算法--二分图最佳完美匹配)
题意:给出若n个白点和n个黑点,要求用n条线段链接并使这些线段不相交思路:想了许久没想出来,看了刘汝佳的训练指南题解。如果两条线段a1-b1,a2-b2相交,那么他们的距离之和一定大于a1 - b2, a2 - b1,所以如果有相交的线段的话不符合二分图最佳匹配的原则,所以最佳匹配中不会出现线段相交的情况,设初始值为距离的相反数就好了,这样就选择的最佳匹配满足条件,直接KM模板可过原创 2016-10-11 21:11:18 · 467 阅读 · 0 评论 -
LA 1384 Stream My Contest(树形图 + 二分)
题意:你需要花费不超过cost元来搭建一个比赛网络,网络中有n台机器,编号0~n-1,其中机器0为服务器,其他机器为客户机。一共有m条可以使用的网线,其中第i条网线的发送端是机器ui,接收端是机器vi(数据只能从机器ui单向传输到机器vi),带宽是bi Kbps,费用是ci元。每台客户机应当恰好从一台机器接收数据,你的任务是最大化网络中的最小带宽。思路:二分kbps建立树形图看是否满足原创 2016-10-10 20:04:02 · 484 阅读 · 0 评论