
图论
Elliott__
这个作者很懒,什么都没留下…
展开
-
【并查集】Codeforces Round #616 (Div. 2) - E. Prefix Enlightenment
题目链接http://codeforces.com/contest/1291/problem/E题意给出一个长度为nnn的010101串SSS表示初始状态。给出kkk个集合,集合内的元素是111~nnn,表示SSS的下标。保证任意三个不同集合的交为空集。每次操作可以选择一个集合,使得集合内所有下标的状态SSS翻转。询问要使得状态SSS前iii位都为111所需要的最少操作次数。题目保证...原创 2020-02-03 17:11:44 · 383 阅读 · 2 评论 -
【树剖】Codeforces Round #601 (Div. 1) - D. Tree Queries
题目链接https://codeforces.com/contest/1254/problem/D题意给出一棵树,每个点都有权值,初始都为0,有两个操作给出v,dv,dv,d,等概率随机一个点rrr,对于所有的点uuu,uuu到rrr的路径上经过点vvv。对于所有的这些点uuu权值加上ddd。求点vvv的权值期望1<=n,q<=1500001<=n,q<=1...原创 2019-11-21 22:24:06 · 261 阅读 · 1 评论 -
【支配树】2014-2015 ACM-ICPC, NEERC, Southern Subregional Contest - L. Useful Roads
题目链接https://codeforces.com/gym/100513/problem/L题意在有向图上每个节点只经过一次的路径称为简单路给出一张有向图,一条边是好的,当且仅当存在一条由1号节点出发的简单路包含这条边。问哪些边是好的。题解支配树模板题,支配树上的返祖边都是坏边。#include<bits/stdc++.h>using namespace std...原创 2019-11-05 12:53:18 · 296 阅读 · 0 评论 -
P5540 【模板】最小乘积生成树
题目链接https://www.luogu.org/problem/P5540题意给出一个 nnn 个点 mmm 条边的无向图,第 iii 条边有两个权值 aia_iai和bib_ibi求该图的一棵生成树 TTT ,使得(∑ae)∗(∑be)\sum a_e)*(\sum b_e)∑ae)∗(∑be)最小。题解https://www.luogu.org/problemnew...原创 2019-11-01 14:54:10 · 657 阅读 · 0 评论 -
【树的哈希/树同构】2019-2020 ICPC, Asia Jakarta Regional Contest - F. Regular Forestation
题目链接https://codeforces.com/contest/1252/problem/F题意给出一棵树,问删去一个度大于1的节点,使得剩下的树两两同构。问剩下的树最多是多少。题解容易想到,能够删去的点不可能存在多个,而且删去的必然是树的重心。剩下就是个判树同构了,而这个可以直接对树进行哈希来判断。关于树的哈希与判树同构:https://www.luogu.org/prob...原创 2019-10-31 11:34:17 · 347 阅读 · 0 评论 -
【线段树优化建图+最短路】Codeforces Round #406 (Div. 1) - B. Legacy
题目链接https://codeforces.com/problemset/problem/786/B题意一共有nnn个点,三种建边方式:点uuu向点vvv建一条权值为www的边点uuu到[l,r][l,r][l,r]内的点建一条权值为www的边[l,r][l,r][l,r]内的点到点vvv建一条权值为www的边一共要加mmm次边,问从点sss到所有点的最短路。1≤n,m≤1e5...原创 2019-10-28 15:16:29 · 447 阅读 · 0 评论 -
【仙人掌直径】P4244 [SHOI2008]仙人掌图 II
题目链接https://www.luogu.org/problem/P4244题意仙人掌:无向图,任何一条边至多在一个环内。直径:任意两点最短路(边权为111)的最大值。题解普通树上求直径可以写成dpdpdp的形式,dp[u]dp[u]dp[u]代表uuu子树内以uuu为端点的最长链,树形dpdpdp做一遍搜索即可。答案更新为:ans=max(dp[u]+dp[v]+1)ans=...原创 2019-10-22 13:26:15 · 313 阅读 · 0 评论 -
POJ 1847 Tram
题目链接<http://poj.org/problem?id=1847>题意:地图上有N个点,它们之间被电车所连,每个点有ki个地方可以走。最开始每个点都与一个地方默认已经相连,可以直接走。也可以进行转换,连接到其他地方,然后再走。如果进行转换就会消耗一个成本。问从A走到B,需要消耗的成本最少为多少。题解:题意理解后就很好做了。将默认相连的路径权值设为0,需要手动转换的...原创 2018-05-02 14:50:45 · 167 阅读 · 0 评论 -
【最小割】Gym - 101982 - E - Cops And Roobers
题目链接<http://codeforces.com/gym/240837>题意:给你一张地图,里面有一个小偷。要求建造一些围栏把小偷圈住,有些地方不可造围栏,有些地方可造,但代价不同。问最少的代价是多少。题解:想到最小割就好做了。对于每个点拆成两个点,中间连一条边,使得点权变成边权,这样跑一遍就出来了。注意n和m是反的。#include<cstdio&...原创 2019-03-18 12:54:41 · 521 阅读 · 0 评论 -
【LCA+主席树】SPOJ - COT - Count on a tree
题目链接<https://cn.vjudge.net/problem/SPOJ-COT>题意:在一棵树上每个点都有一个权值,有若干次询问,每次询问一条简单路上的权值第k小。题解:主席树主要利用前缀和的性质来确定范围内的值,并用线段树得出答案。本题是建立在树形结构上,所以应当想办法在树上利用前缀和求出范围的权值线段树。很容易想到跟lca有关。如果我们dfs树,并对树上...原创 2019-03-21 21:55:22 · 238 阅读 · 0 评论 -
【树剖】Disruption
题目链接<http://10.7.88.2/CLanguage/showproblem?problem_id=2266>题意:给出一棵树,和一些额外的边。询问树的每条边,把这条边断开,添加一条额外的边使原图仍然连通。如果存在这样的额外边,输出权值最小的,否则输出-1.题解:很容易想到,对于每一条额外边,这一段的简单路上的边都被更新答案,所以就是个树剖裸题。注意:...原创 2019-03-12 14:58:56 · 199 阅读 · 0 评论 -
【树分】POJ - 1741 - 树中点对统计
【论文链接】分治算法在树的路径问题中的应用POJ - 1741 - 树中点对统计题目链接<http://poj.org/problem?id=1741>#include<iostream>#include<stdio.h>#include<algorithm>#include<string.h>#define ll ...原创 2019-03-12 10:40:02 · 200 阅读 · 0 评论 -
【启发式合并】【主席树-查询区间不同数的个数】HDU - 6504 - Problem E. Split The Tree
题目链接<http://acm.hdu.edu.cn/showproblem.php?pid=6504>题意:一棵树上,每个点都有一个权值。一棵树的价值是不同的权值数量,这棵树去掉一条边后拆成两棵树,问这两棵树的最大价值和是多少。题解1:首先考虑到dfs序的性质,每棵子树都在序列上成一段。把这个序列复制一遍,变成长度为2*n的序列。这样问题就变成了区间内不同数的个数...原创 2019-04-21 20:11:04 · 491 阅读 · 3 评论 -
【tarjan缩点+LCA】ZOJ - 4097 - Rescue the Princess
题目链接<http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5986>题意:给出一张图,两个起点和一个终点,问是否存在两条不相交的路。题解:先来个并查集,判断是否在一个连通块内。再缩个点,如果都在一个点内,那么一定可以。否则就是棵树,lca分类讨论一下。赛上居然数组开小,疯狂自闭..#...原创 2019-04-15 13:52:07 · 191 阅读 · 0 评论 -
【主席树/DFS】Gym - 101848C - Object-Oriented Programming
题目链接http://codeforces.com/gym/101848/problem/C题意:有n个类,每个类都定义了一些方法,而且每个类都会继承另一个类(1号类除外)。q次询问,每次询问一个类调用一个方法,问所调用的方法是哪一个类里写的。所有申明的方法数不超过1e6。题解:大多是DFS写的,我这里提供一个主席树的方法。每一个类建一个方法的线段树,记录的是最近申明的方法,也就是...原创 2019-05-11 18:40:45 · 687 阅读 · 0 评论 -
【最小树形图 - 朱刘算法模板】HDU - 2121 - Ice_cream’s world II
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2121题意在一张有向图上,选择一个首都,然后选择若干条边使得首都能去其他的城市。问代价最小是多少题解最小树形图模板题,虚拟一个点连向所有的点,跑一边朱刘算法,虚拟点连的就是首都#include<iostream>#include<cstdio>#include&...原创 2019-07-23 16:40:14 · 181 阅读 · 0 评论 -
【支配树】HDU - 6604 - Blow up the city
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=6604题意在一个DAG图上,有两个起始点,它们向终点运输物资。没有出边的点是终点。如果摧毁一个点,使得某一个起始点无法到达所有的终点,就算胜利。有q个询问,每次询问两个点作为初始点,有几种胜利方案。题解所有边反向,新建一个超级源点连向所有入度为零的点。题目就变成了源点到两个点上的必经点的个数...原创 2019-07-30 13:40:59 · 177 阅读 · 0 评论 -
【二分图最大独立集的输出】2019牛客暑期多校训练营(第五场) - F - maximum clique 1
题目链接https://ac.nowcoder.com/acm/contest/885/F题意给出n个数,问最多能选出几个数,使得任意两个之间的不同的位数不少于2.题解**最大独立集的输出:**左边找一个没有匹配的点,搜一次增光路,把经过的点全部标记。最后左边标记的点和右边没标记的点,就是答案。不会证明。#include<bits/stdc++.h>using n...原创 2019-08-02 15:03:42 · 298 阅读 · 0 评论 -
【最短路】HDU - 6705 - path
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=6705题意给出一张图,每条边可以走任意多次,问所有路径的第k短。题解介绍一个乱做的方法。首先我们如果直接跑最短路会MLE(以及TLE),但很明显跑最短路的时候很多权值太大的是不需要的。所以我就二分了一个权值mid,如果跑出来的权值大于mid,我就不要。这样如果最短路队列里面有k个,就把二分...原创 2019-08-23 18:13:41 · 223 阅读 · 0 评论 -
【树链的交】ICPC Dhaka Regional 2018 - F - Path Intersection
题目链接https://codeforces.com/gym/102040/attachments题意给出一棵树,有Q个询问,每次询问K条路径,问这K条路径都经过的点有多少个。题解第一眼树剖裸题,怕时间复杂度背卡,选择LCA分类讨论。疯狂wa之后,才明白这是不可能讨论出来的。然后想了个被卡时间的方法:维护一个条可行路径(x,y),每次加入一条路径(nx,ny)求并。先把nx和ny尽可...原创 2019-08-20 19:17:47 · 539 阅读 · 0 评论 -
【欧拉回路+DFS】GYM - 229073 - C. Promenade by the lake
题目链接<http://codeforces.com/gym/229073/problem/C>题意:有一张无向连通图,添加若干条边使图存在欧拉回路。输出任意一种方案。题解:无向图存在欧拉回路的判断条件是所有点的度数为偶数。 所以最后的添边方案应该满足:度为奇数的连奇数条边,度为偶数的连偶数条边。 考虑新加的一条链如:1—2—3—4—5,那么链的两端度数加1,链的中...原创 2018-09-25 12:34:33 · 290 阅读 · 0 评论 -
LightOJ - 1074 - Extended Traffic
题目链接<http://lightoj.com/volume_showproblem.php?problem=1074>题意:一共有N个城市,被M条单向路连接。每个城市都有一个繁忙值,每条路的权值为(终点的繁忙值-起点的繁忙值)^3。一共有Q次的询问操作,问从1号城市到所问城市的最短路是多少。如果权值小于3或路不通,输出'?'。题解:题目可能存在负环,要用spfa做,在...原创 2018-05-02 20:55:21 · 316 阅读 · 0 评论 -
HDU 4725 The Shortest Path in Nya Graph
题目链接<http://acm.hdu.edu.cn/showproblem.php?pid=4725>题意:一共有N个点,每个点都在一个楼层里,相邻楼层之间可以走,权值为C(注意:同一层楼之间的权值不是0)。另外有m条无向边连接两个点。问从点1到点n的最短路径。题解:题目的范围有点大,不能直接建边。可以将每一层抽象出一个点,也就是说一共有2*n个点。如果点...原创 2018-05-07 20:39:43 · 115 阅读 · 0 评论 -
【最大流Dinic】POJ-3469-Dual Core CPU
题目链接<http://poj.org/problem?id=3469>题意:有n项任务,交给两个芯片完成,不同的芯片完成任务所需的成本不同。另外有些任务如果不是同一个芯片完成,会多花一些成本。问完成所有的任务成本最少是多少。题解:最小割裸题。把这些任务分割成两边,最小割就是最小的成本。这题给了15秒时间,十万k的内存。可以无限测模板。#include&l...原创 2018-08-04 11:50:10 · 207 阅读 · 0 评论 -
【LCA+Tarjan】POJ - 3694 - Network
题目链接<http://poj.org/problem?id=3694>题意:有一张无向图,在其中添边。问每次添边之后,还剩多少桥。题解:一开始我想首先Tarjan缩点,然后就形成了一棵树。每次添加一条边,就在树上形成了一个环,而这个环就是原来树上两点的路径,所以可以用LCA。然后对于树上形成了一个环的点再用并查集进行维护。对于答案的更新操作就是判断边上两点的并查集是否...原创 2018-09-12 18:22:01 · 352 阅读 · 0 评论 -
【Tarjan】HDU - 4635 - Strongly connected
题目链接<http://acm.hdu.edu.cn/showproblem.php?pid=4635>题意:在一张有向图上加尽可能多的边,使它不成为强连通图。输出能加的边的数量。题解:首先Tarjan缩点。考虑把图上的点分成两块,左边点的数量为,右边点的数量为。,为点的总数。左边所有的点互相连接,一共有条边;右边所有的点互相连接,一共有条边。左边的点与右边连一...原创 2018-09-13 10:56:31 · 154 阅读 · 0 评论 -
二分图匹配问题合集
定理1(Konig 定理):最小点覆盖数 = 最大匹配数点覆盖:点集合使得任意一条边至少有一个端点在集合中。定理2:最大独立集 = 顶点数 - 最大匹配数独立集:点集合中任何两个顶点都不互相连接。定理3:最小路径覆盖数 = 顶点数 – 最大匹配数路径覆盖:任何一个点都属于且仅属于一条路径。HDU - 1045 - Fire Net题目链接<http://acm...原创 2018-09-13 19:21:25 · 1385 阅读 · 1 评论 -
【区间K覆盖】POJ - 3762 - The Bonus Salary!
题目链接<http://poj.org/problem?id=3762>题意:给出n个带权值的区间,每个点只能被覆盖k次,问最后获得的权值和最大是多少。题解:最小费用最大流:只考虑每个区间的两个端点,全部进行排序后离散化 相邻的点连一条权值>=k费用为0的边 对于一个区间的左端点与右端点连一条权值为1费用为-w的边,代表这个区间被选中 起点与第一个点连一...原创 2018-09-21 18:27:59 · 187 阅读 · 0 评论 -
【LCA+最短路】Codeforces - 1051 - F. The Shortest Statement
题目链接<http://codeforces.com/problemset/problem/1051/F>题意:给出一张n个点,m条边的无向连通图。有q次询问,每次询问两个节点的最短距离。(1≤n,m≤1e5,m−n≤20,1≤q≤1e5)题解:因为m−n≤20,所以图总体来看就是棵树。把能够构成环的点拎出来,构成一个集合p。因为它们的数量也不多,可以对集合p内的...原创 2018-09-25 17:06:40 · 217 阅读 · 0 评论 -
【二分图/网络流】Gym - 101873F - Plug It In
题目链接<http://codeforces.com/gym/229936/problem/F>题意:有m个插座,n个电器,每个插座最多可连接一个电器。另外有一个插头,可以使得一个插座连接三个电器,问最大匹配数是多少。题解:二分图:二分图做法相对简洁一些,也会更快,保存原先的最大匹配,枚举每个插座是否还存在增广路。每次就是要对原图的反复复制。#include<...原创 2018-10-05 18:41:16 · 422 阅读 · 0 评论 -
【倍增LCA求次小生成树】Gym - 101889I - Imperial roads
题目链接<http://codeforces.com/gym/101889/attachments>题意:给出若干条无向边,有q次询问,每次询问确定一条边必须添加的最小生成树。题解:与次小生成树的思路一样,先求一遍最小生成树,然后添加边,就构成一个环,把环内最大边删去即可。利用倍增LCA的思想,处理简单路上的最大边。#include<bits/stdc+...原创 2018-10-10 12:30:43 · 290 阅读 · 0 评论 -
Codeforces - 1063B - Labyrinth
题目链接<http://codeforces.com/problemset/problem/1063/B>题意:给出一张地图,限制向左走与向右走的步数,问能到达的格子的数目。题解:直接存四个状态明显会炸,但可以发现,向左走的数量与向右走的数量差是固定的,也就是你每向左多走一格,就要向右走一个走回来。所以直接维护向左走数量的最小值,跑一边最短路,最后对每一个点进行判断即可...原创 2018-10-15 16:46:52 · 363 阅读 · 0 评论 -
【无向Tarjan+树的直径】HDU - 4612 - Warm up
题目链接<http://acm.hdu.edu.cn/showproblem.php?pid=4612>题意:给出一张无向图,加一条边,问能使得图中桥的数量最少是多少。题解:无向图Tarjan缩点,形成一棵树。树上的最长链加一条边是最优解。答案就是原本桥的数量减去树的直径。#include<iostream>#include<cstdio>...原创 2018-09-12 10:51:07 · 196 阅读 · 0 评论 -
【LCA模板】HDU - 2874 - Connections between cities
题目链接<http://acm.hdu.edu.cn/showproblem.php?pid=2874>题意:给出一个森林,要求判断两个点是否在同一棵树上,如果在输出两者之间的简单路径长度。题解:关于LCA:https://www.cnblogs.com/FuTaimeng/p/5655616.html是否在同一棵树上就用并查集判断一下。树上两点间距就是根节点到...原创 2018-09-10 19:28:19 · 128 阅读 · 0 评论 -
【有源汇上下界可行流】ACM-ICPC 2018 沈阳赛区网络预赛 - F - Fantastic Graph
题目链接<https://nanti.jisuanke.com/t/31447>题意:给出一张二分图,初始每个节点的度数都为零。选择若干条边,使得每个节点的度数范围再[L,R]范围内。每选一条边,边上两端的节点度数+1。题解:关于有上下界的网络流:https://blog.youkuaiyun.com/u011008379/article/details/38306477源点与...原创 2018-09-08 21:27:51 · 406 阅读 · 0 评论 -
【二分答案+最大流】BZOJ-1305-dance跳舞
题目链接<https://cn.vjudge.net/problem/HYSBZ-1305>题解:男生拆成两个点,x1,y1。建边<x1,y1>=k。女生拆成两个点,x2,y2。建边<y2,x2>=k。如果互相喜欢,<x1,x2>=1。不喜欢<y1,y2>=1。二分答案建边<s,x1>=<x2,t&g原创 2018-08-06 18:53:36 · 170 阅读 · 0 评论 -
【最大流】POJ-1087-A Plug for UNIX
题目链接<http://poj.org/problem?id=1087>题意:有n个连接了电源的插座。m个设备,每个设备有对应的插头。有k个转换器,转换器能够让连接的插座进行转换,转换器无限个数。问最少有几个设备没法连接插座充电。题解:将每个插上电源的插座连接一个超级汇点,权值为1。建一个超级源点连接每一个设备,权值为1。设备与它对应的插头连接,权值为1。...原创 2018-08-07 20:39:27 · 131 阅读 · 0 评论 -
【最大流+缩点】HDU-3605-Escape
题目链接<http://acm.hdu.edu.cn/showproblem.php?pid=3605>题意:有n个人,m个星球。每个人都对不同的星球有自己的喜好,每个星球都有自己的容量。问能否让所有的人都呆在自己喜欢的星球里。(1 <= n <= 100000), m (1 <= m <= 10)题解:以为是套模板的题,一直TLE,MLE。...原创 2018-08-08 21:11:12 · 122 阅读 · 0 评论 -
【费用流】POJ-2516-Minimum Cost
题目链接<http://poj.org/problem?id=2516>题意:有n个售货机,有k种物品。每个售货机对每种物品有自己的需求量。有m个生产地,对每种物品都有自己的产出量。不同的生产地到不同的售货机之间运送不同的产品需要的成本不同。问能否让所有售货机的需求得到满足,成本最低是多少。题解:k个物品之间其实是互不相关的,一开始是打算建一个包含所有点的比较大的图,...原创 2018-08-10 21:30:47 · 144 阅读 · 0 评论 -
【最小割的输出】UVA - 10480 - Sabotage
题目链接<https://cn.vjudge.net/problem/UVA-10480>题意:n个城市被网络相连,想要断开1号城市和2号城市的连接。问花费最少的代价的话,需要断开的路径有哪些。题解:最小割等于最大流。如果想要知道截断的路径,只需要在残余网络中再搜索一遍,标记每个点所属的块。如果有一条边连的两点所属块不同,则该边需要断开。#include<c...原创 2018-08-11 21:55:23 · 274 阅读 · 0 评论