随笔分类 - 图论算法
摘要:[BZOJ 3123] [SDOI 2013]森林(可持久化线段树+启发式合并) 题面 给出一个n个节点m条边的森林,每个节点都有一个权值。有两种操作: 1. Q x y k查询点x到点y路径上所有的权值中,第k小的权值是多少。此操作保证点x和点y连通,同时这两个节点的路径上至少有k个点。 2. L
阅读全文
摘要:[Codeforces 1214D]Treasure Island(dfs) 题面 给出一个n m的字符矩阵,'.'表示能通过,' '表示不能通过。每步可以往下或往右走。问至少把多少个'.'变成' ',才能让从(1,1)出发不能到达(n,m) $n \times m \leq 10^6$ 分析 第一
阅读全文
摘要:[Codeforces 1205B]Shortest Cycle(最小环) 题面 给出n个正整数$a_i$,若$a_i \& a_j \neq 0$,则连边$(i,j)$(注意i j的边和j i的边看作一条。问连边完图的最小环长度 $n \leq 10^5,0 \leq a_i \leq 10^{1
阅读全文
摘要:[LOJ 3101] [Luogu 5332] [JSOI2019]精准预测(2 SAT+拓扑排序+bitset) 题面 题面较长,略 分析 首先,发现火星人只有死和活两种状态,考虑2 SAT 建图 对于每个火星人,把它按时间和状态拆点,$(i,t,0/1)$代表第i个火星人在t时刻,0代表活,1代
阅读全文
摘要:[Luogu P3825] [NOI2017] 游戏 (2 SAT) 题面 题面较长,略 分析 看到这些约束,应该想到这是类似2 SAT的问题。但是x地图很麻烦,因为k SAT问题在k 2的时候是NPC问题,所以不能直接做。 观察到$d \leq 8$,我们可以直接枚举每个x地图可以让哪些车使用,然
阅读全文
摘要:[BZOJ 2199] [USACO11JAN] 大陆议会The Continental Cowngress(2 SAT) 题面 题面较长,略 分析 考虑把问题转化成一个依赖性问题 我们把每只奶牛投出的两票中至少有一票和最终结果相符合转化:一只奶牛刚好投两次票,所以只要不满足奶牛的其中一次投票,就要
阅读全文
摘要:[HNOI2016]树(可持久化线段树+树上倍增) 题面 给出一棵n个点的模板树和大树,根为1,初始的时候大树和模板树相同。接下来操作m次,每次从模板树里取出一棵子树,把它作为新树里节点y的儿子。操作完之后有q个询问,询问新树上两点之间的距离 $n,m,q \leq 1 \times 10^5$ 分
阅读全文
摘要:[luogu4768] [NOI2018] 归程 (Dijkstra+Kruskal重构树) 题面 题面较长,这里就不贴了 分析 看到不能经过有积水的边,即不能经过边权小于一定值的边,我们想到了kruskal重构树。我们把边按海拔高度从大到小排序,然后建立一棵Kruskal重构树。 树上维护什么呢?
阅读全文
摘要:[Codeforces 1197E]Culture Code(线段树优化建图+DAG上最短路) 题面 有n个空心物品,每个物品有外部体积$out_i$和内部体积$in_i$,如果$in_i out_j$,那么j就可以套在i里面。现在我们要选出n个物品的一个子集,这个子集内的k个物品全部套在一起,且剩
阅读全文
摘要:[Codeforces 639F] Bear and Chemistry(Tarjan+虚树) 题面 给出一个n个点,m条边的无向图(不保证连通,可能有自环和重边),有q次询问,每次询问给出p个点和q条边,判断加上q条边后,这p个点中的任意一个点对(x,y)是否都满足:能从x走到y,再从y走到x,不
阅读全文
摘要:[Codeforces600E] Lomsat gelral(树上启发式合并) 题面 给出一棵N个点的树,求其所有子树内出现次数最多的颜色编号和。如果多种颜色出现次数相同,那么编号都要算进答案 N≤100000 分析 树上启发式合并,用map记录颜色出现次数,合并的时候更新最多的出现次数和编号和。
阅读全文
摘要:[BZOJ3626] [LNOI2014]LCA(树链剖分) 题面 给出一棵N个点的树,要求支持Q次询问,每次询问一个点z与编号为区间[l,r]内的点分别求最近公共祖先得到的最近公共祖先深度和。N, Q≤50000 分析 对于一个点i,我们把i到根节点的路径全部标记+1,然后从z往上找,第一个碰到的
阅读全文
摘要:[BZOJ3307] 雨天的尾巴(树上差分+线段树合并) 题面 给出一棵N个点的树,M次操作在链上加上某一种类别的物品,完成所有操作后,要求询问每个点上最多物品的类型。 N, M≤100000 分析 考虑树上差分。对于每条链(x,y),我们在x,y打一个+标记,lca(x,y)和lca(x,y)的父
阅读全文
摘要:[BZOJ 3307]Cow Politics (LCA) 题面 给出一棵N个点的树,树上每个节点都有颜色。对于每种颜色,求该颜色距离最远的两个点之间的距离。N≤200000 分析 显然对于每种颜色建立一棵虚树是可行的。但是有编码复杂度更低的方法。显然某种颜色距离最远的两个点中,一个肯定是这种颜色的
阅读全文
摘要:[CF453C] Little Poney and Summer Sun Celebration (思维) 题面 给出一张N个点M条边的无向图,有些点要求经过奇数次,有些点要求经过偶数次,要求寻找一条满足要求的路径,且该路径长度不超过点数的四倍。 N, M≤100000 分析 如果将图整个遍历一遍再
阅读全文
摘要:[51nod 1681]公共祖先(dfs序+线段树合并) 题面 给出两棵n(n include include include define maxn 100000 define maxlogn 25 using namespace std; int n; struct segment_tree{
阅读全文
摘要:[51nod 1766]树上的最远点对 (树的直径+ST表求lca+线段树) 题面 给出一棵N个点的树,Q次询问一点编号在区间[l1,r1]内,另一点编号在区间[l2,r2]内的所有点对距离最大值。$N, Q≤100000$ 分析 看到区间,我们应该想到用线段树维护,区间[l,r]存储编号在[l,r
阅读全文
摘要:[HDU 5293]Tree chain problem(树形dp+树链剖分) 题面 在一棵树中,给出若干条链和链的权值,求选取不相交的链使得权值和最大。 分析 考虑树形dp,dp[x]表示以x为子树的最大权值和(选的链都在i的子树中) 设sum[x]表示x的儿子的dp值和,即$\sum _{y \
阅读全文
摘要:[HDU 1529]Cashier Employment(差分约束系统) 题面 有一个超市,在24小时对员工都有一定需求量,表示为$r_i$,意思为在i这个时间至少要有i个员工,现在有n个员工来应聘,每一个员工开始工作的时间为$t_i(i \in [0,23])$,并持续8小时,问最少需要多少员工才
阅读全文
摘要:[Codeforces 555E]Case of Computer Network(Tarjan求边 双连通分量+树上差分) 题面 给出一个无向图,以及q条有向路径。问是否存在一种给边定向的方案,使得这q条路径都能被满足。(如果有一条边是从a b),而经过它的路径是从b a,那么久不满足)。只需要判
阅读全文

浙公网安备 33010602011771号