随笔分类 -  图论算法

摘要:[GDOI2017] 取石子游戏(LCA) 题面 给出一棵树,每个点都有一个权值。对于每个节点,求去掉该节点的子树后,剩下所有节点的权值MEX(最小的没有出现的非负整数。) 分析 用权值线段树合并乱搞显然是可行的,但细节很多且需要卡常。 我们考虑所有权值为$i$的节点对答案的影响。求所有节点的LCA 阅读全文
posted @ 2020-03-22 18:19 birchtree 阅读(212) 评论(0) 推荐(0)
摘要:[SPOJ2666][ZJOI2007]捉迷藏Query on a tree IV(树链剖分)(论文做法) 题面 实际上,捉迷藏是Query on a tree IV的简化版。但区别只是捉迷藏的边权全部为1.这里把两个题合并起来写。 给定一棵包含 N 个结点的树,每个节点要么是黑色(亮灯),要么是白 阅读全文
posted @ 2020-03-17 16:36 birchtree 阅读(267) 评论(0) 推荐(0)
摘要:[BZOJ 3145]Str(SAM+启发式合并) 题面 Arcueid得知了两者的DNA片段,想寻求一个DNA片段,使得其在两者的DNA中都出现过。我们知道公主的脑袋有点不太灵活,如果两个DNA片段只有一个位置不同,她也会将其认为是相同的。所以请您找出这样的最长的DNA片段吧。 分析 考虑两个串中 阅读全文
posted @ 2020-03-17 15:42 birchtree 阅读(270) 评论(0) 推荐(0)
摘要:[Codeforces 553E]Kyoya and Train(期望DP+Floyd+分治FFT) 题面 给出一个$n$个点$m$条边的有向图(可能有环),走每条边需要支付一个价格$c_i$,需要的时间为$[1,T]$中随机的整数,时间为$j$的概率为$p_{i,j}$。从$1$出发走到$n$,如 阅读全文
posted @ 2020-02-10 22:13 birchtree 阅读(317) 评论(0) 推荐(0)
摘要:[Codeforces 603E]Pastoral Oddities(LCT) 题面 图中有n个孤立点,依次向图中加入m条带权无向边。使得图中每个点的度数均为奇数的边集是合法的,其权值定义为集合中的最大边权。每次加入边后,询问权值最小的合法边集的权值,不存在合法边集时输出−1。 $n \leq 10 阅读全文
posted @ 2020-01-17 22:25 birchtree 阅读(222) 评论(0) 推荐(0)
摘要:[LuoguP3502] [BZOJ 2085] [POJ2010]CHO Hamsters(KMP+最短路+矩阵快速幂) 题面 Tz养了$n$只仓鼠,他们都有英文小写的名字,现在Tz想用一个字母序列来表示他们的名字,只要他们的名字是字母序列中的一个子串就算,出现多次可以重复计算。现在Tz想好了要出 阅读全文
posted @ 2020-01-09 17:03 birchtree 阅读(167) 评论(0) 推荐(0)
摘要:[Codeforces 208E] Blood Cousins(dsu on tree+倍增) 题面 给出一个有根树森林,点集总大小为$n$。有$m$个询问,每个询问包含两个数$v_i,p_i$,询问$v_i$的$p_i$级祖先的子树内有多少和$v_i$深度相同 分析 先把询问离线。 相同深度点的个 阅读全文
posted @ 2020-01-09 16:34 birchtree 阅读(216) 评论(0) 推荐(0)
摘要:[GXOI/GZOI2019]旧词 (树链剖分) 题面 给定一棵 $n$个点的有根树,节点标号 \([1,n]\),1号节点为根。 给定常数$k$ 给定$Q$个询问,每次询问给定$x,y$,求:\(\sum_{i=1}^x \mathrm{deep}_{\mathrm{lca}(i,y)}^k \m 阅读全文
posted @ 2019-12-26 20:05 birchtree 阅读(172) 评论(0) 推荐(0)
摘要:[BZOJ 2959] 长跑(LCT+并查集) 题面 为了让同学们更好地监督自己,学校推行了刷卡机制。 学校中有n个地点,用1到n的整数表示,每个地点设有若干个刷卡机。 有以下三类事件: 1、修建了一条连接A地点和B地点的跑道。 2、A点的刷卡机台数变为了B。 3、进行了一次长跑。问一个同学从A出发 阅读全文
posted @ 2019-12-23 22:14 birchtree 阅读(248) 评论(0) 推荐(0)
摘要:[BZOJ2594] [WC2006]水管局长(Kruskal+LCT) 题面 SC省MY市有着庞大的地下水管网络,嘟嘟是MY市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可能要将一定量的水从x处送往y处,嘟嘟需要为供水公司找到一条从A至B的水管的路径,接着通过信息化的控制 阅读全文
posted @ 2019-12-15 14:22 birchtree 阅读(211) 评论(0) 推荐(0)
摘要:从多种角度看[BZOJ 1061] [NOI 2008]志愿者招募(费用流) 题面 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管。布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募一批短期志愿者。经过估算,这个项目需要N 天才能完成,其中第i 天至少需要Ai 个人。 布 阅读全文
posted @ 2019-12-04 13:31 birchtree 阅读(383) 评论(0) 推荐(0)
摘要:[BZOJ 2002] [HNOI2010]弹飞绵羊(Link Cut Tree) 题面 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第 阅读全文
posted @ 2019-12-01 15:49 birchtree 阅读(176) 评论(0) 推荐(0)
摘要:[BJOI2014]大融合(Link Cut Tree) 题面 给出一棵树,动态加边,动态查询通过每条边的简单路径数量。 分析 通过每条边的简单路径数量显然等于边两侧节点x,y子树大小的乘积。 我们知道裸的LCT只能维护链的信息,那么怎么维护子树大小呢?我们只需要对于节点x维护x的所有虚儿子的子树大 阅读全文
posted @ 2019-12-01 15:40 birchtree 阅读(208) 评论(0) 推荐(0)
摘要:[BZOJ1576] [BZOJ3694] [USACO2009Jan] 安全路径(最短路径+树链剖分) 题面 BZOJ1576和BZOJ3694几乎一模一样,只是BZOJ3694直接给出了最短路树 给出一个n个点m条边的无向图,n个点的编号从1~n,定义源点为1。定义最短路树如下:从源点1经过边集 阅读全文
posted @ 2019-12-01 15:12 birchtree 阅读(301) 评论(0) 推荐(0)
摘要:[Codeforces 1005F]Berland and the Shortest Paths(最短路树+dfs) 题面 题意:给你一个无向图,1为起点,求生成树让起点到其他个点的距离最小,距离最小的生成树可能有多个。给定k,如果方案数比k小就输出全部方案,否则输出k种方案。 分析 先跑最短路,对 阅读全文
posted @ 2019-12-01 14:48 birchtree 阅读(224) 评论(0) 推荐(0)
摘要:[Codeforces 1245D] Shichikuji and Power Grid (最小生成树) 题面 有n个城市,坐标为$(x_i,y_i)$,还有两个系数$c_i,k_i$.在每个城市建立发电站需要费用$c_i$.如果不建立发电站,要让城市通电,就需要与有发电站的城市连通。i与j之间连一 阅读全文
posted @ 2019-11-02 20:09 birchtree 阅读(569) 评论(0) 推荐(0)
摘要:[Codeforces 1239D]Catowise City(2 SAT) 题面 有n个主人,每个主人都有一只猫。每个主人认识一些猫(包括自己的猫)。现在要选出一些人和一些猫,个数均大于0且总共为n,且所有人和所有猫都互不认识。判断是否有解,有解输出任意一组方案. $n \leq 10^6$ 分析 阅读全文
posted @ 2019-10-23 18:28 birchtree 阅读(274) 评论(0) 推荐(0)
摘要:[BZOJ3451]Normal(点分治+FFT) 题面 给你一棵 n个点的树,对这棵树进行随机点分治,每次随机一个点作为分治中心。定义消耗时间为每层分治的子树大小之和,求消耗时间的期望。 分析 根据期望的线性性,答案是$\sum_{i=1}^n(i的期望子树大小)=\sum_{i=1}^n \su 阅读全文
posted @ 2019-10-13 11:51 birchtree 阅读(293) 评论(0) 推荐(0)
摘要:[多校联考2019(Round 5)]蓝精灵的请求(二分图染色+背包) 题面 在山的那边海的那边住着 n 个蓝精灵,这 n 个蓝精灵之间有 m 对好友关系,现在蓝精灵们想要玩一个团队竞技游戏,需要分为两组进行,且每一组中任意两个蓝精灵都是好友。另外,他们还想要最小化每组蓝精灵内部的好友关系数之和。蓝 阅读全文
posted @ 2019-10-06 09:37 birchtree 阅读(232) 评论(0) 推荐(0)
摘要:[BZOJ3133] [Baltic2013]ballmachine(树上倍增+堆) 题面 有一个装球机器,构造可以看作是一棵树。有下面两种操作: 从根放入一个球,只要下方有空位,球会沿着树滚下。如果同时有多个点可以走,那么会选择编号最小的节点所在路径的方向。比如依次在树根 放2个球,第一个球会落到 阅读全文
posted @ 2019-09-14 10:37 birchtree 阅读(355) 评论(0) 推荐(0)