----------------图论------------
文章平均质量分 76
alpc_qleonardo
这个作者很懒,什么都没留下…
展开
-
HDU 6331 2018HDU多校赛 第三场 Walking Plan(最短路+矩阵优化+分块)
大致题意:给你一个含有不超过50个点的图,然后有q个询问,每次给出三个数字s、t和k,问从s出发走到t,至少需要经过k条边的最短路径是多少。非常厉害的一道题,曾经我以为自己对矩阵的所有用途已经很了解了,但是这次再一次让我发现自己真的还是太无知……首先,我们考虑最初状态的邻接矩阵的含义,f[i][j]表示从i走到j最近的一条边的长度,那么我们也可以看成是从i到j经过一条边的最短路。然后,如果考虑这个矩阵自己与自己进行矩阵“乘法”,这里打个引号因为这个乘法的含义不同于普通的矩阵乘法,具体来说,我们定义乘法为:,原创 2018-07-30 23:34:08 · 382 阅读 · 0 评论 -
2019HDU多校赛第二场 H HDU 6598 Harmonious Army(最小割 + 构图)
大致题意:你要把n个东西划分为A和C两个部分,然后有m对关系。对于第i个关系,表示两个人有关联,如果两个人同时分到A里面,那么权值增加a;如果同时分到C那么权值增加c;如果一个在C一个在A,那么权值增加a/4+c/3。这道题,网络流看多了你就知道怎么做了,建图求最小割即可。具体来说,要把这些东西分成两个部分,相当于在图中求最小割,这样点要么和源点在一个部分,要么和汇点在一个部分...原创 2019-07-24 17:45:12 · 1194 阅读 · 4 评论 -
tarjan连通分量总结
这个东西怎么说呢,感觉很丢脸啊,高中就学过的东西,现在作为一个打了两年比赛的ACMer,居然对这个东西不太熟。tarjan算法我就不说了。连通分量的概念我也不说了。现在看来tarjan主要用于三个方面。首先按照无向图和有向图去分类。在有向图里面,由于图是有向的,所以可以研究的东西没有那么多。如果能够找到从a到b的路径,也能够找到从b到a的路径,那么这两个点就在同一个强连通分量里面。求...原创 2019-04-18 20:51:45 · 304 阅读 · 0 评论 -
ZOJ 4097 Rescue the Princess(边双连通分量缩点 + LCA)
大致题意:给你一个可以有重边和自环的n个点m条边的无向图,给你q个询问。每个询问告诉你公主的位置和两个骑士的位置。现在骑士要去救公主,问是否存在从两个骑士出发点到公主的边不相交路径。我已经标出来了,是边不相交,而不是点不相交。然后这是一个无向图,所以我们容易想到的第一件事情就是要进行缩点。关于缩点,这里用到的是边双连通分量的定义,至于点双连通分量、边双连通分量和连通分量的区...原创 2019-04-18 00:07:01 · 354 阅读 · 0 评论 -
牛客练习赛40 F 小D的剑阵(最小割 + 构图)
中文题。1000的范围,有一些约束条件,其实很容易想到应该是用最小割去做。一开始本来想的是转换成闭合子图,这样可以处理两个都取的情况。但是闭合子图无法处理两个都不取的情况,然后也就不能这么做了。本题用到了一些非常巧妙的技巧。首先看下图: 对于一对约束关系x和y,我们可以按照上图的方...原创 2019-02-18 13:47:37 · 337 阅读 · 1 评论 -
计蒜客 ICPC焦作网络赛 Modular Production Line(区间k覆盖 + 最小费用最大流)
大致题意:给你N个机器,可以生产M个物品,每个物品i生产出来需要区间[li,ri]内的机器一起工作。可以产生wi的利润。每个物品只能生产一次,每个机器最多只能工作k次,现在问你能够产生的最大利润。每个机器只能工作k次,每个物品只能够生产一次,求最大利润。这种问题一看显然就像是一个费用流相关的东西。经过观察分析,你可以发现,这个就是一个区间k覆盖的问题。即一个区间对...原创 2018-09-19 15:34:33 · 231 阅读 · 0 评论 -
HDU 6445 2018CCPC网络赛1008 Search for Answer(费用流 + 构图)
大致题意:给你一个竞赛图,告诉你一个记数方法,也即所有边同向的四元组加一,所有相邻两边方向相反的四元组减一。现在让你最大化这个结果。说实话,不看题解应该很难想到是一个费用流……题解给的也真是简单,个人感觉还可能有错?我们可以这么考虑,观察它给的计数算法,我们可以发现,他的总的循环次数是。于是我们不妨假设每一次循环都产生贡献,然后减去那些实际上不产生贡献和产生负贡献的东西。考虑什么样的情况下不会产生贡献,我们发现如果一个点,我选择了任意两条它的出边以及对应的点,那么不管第四个点是什么,显然构成的四元组一定不会原创 2018-08-28 16:33:20 · 609 阅读 · 0 评论 -
CodeForces 1023F Mobile Phone Network(并查集 + 最小生成树)
大致题意:你和你的竞争对手一起竞争去铺设一个网络,这个网络有n个节点。然后你的竞争对手已经给出了他的方案。他给出了他要建立的所有连线以及每根连线的代价。然后你已经决定了你的连线方案,但是每根线的定价还没有确定。当你给出定价之后,客户会在你们两个提供的所有连线中选择n-1条线,使得网络连通并且代价最小。现在,你想要让客户把你提供的所有线路都选上,问你该如何定价使得在满足你所有的线路都被选中的同时,自己的收益最大,也即定价总和最高。当时比赛的时候没有时间看这道题,赛后自己想了想就知道了做法。但是看了别人的代码,原创 2018-08-18 17:43:50 · 758 阅读 · 0 评论 -
HDU 6350 2018HDU多校赛 第五场 Always Online(图论 + 并查集 + 组合计数)
大致题意:给你一个仙人掌图,让你计算:。根据去年多校赛某一道题的经验,很多仙人掌图的问题,其实可以转化为树的问题。所以我们同样考虑,如果这是一棵树的话如何去做。注意到表达式里面的flow(i,j)表示从i到j的最小割或最大流,而在树上的最小割可以看作是两点之间连线的最短边,那么我们要做的就是统计每一条边作为最短边的贡献。这样我们不禁就联想到了之前做过的 Codeforces 915F 。这题是求任意两点之间路径上最长边减去最短边之差之和。和那题类似,在不考虑仙人掌图,而是普通树的情况下,本题考虑对边进行排序原创 2018-08-12 21:46:27 · 357 阅读 · 0 评论 -
HDU 6368 2018HDU多校赛 第六场 Variance-MST(LCT+kruskal)
大致题意:给你很多条边,每条边有边权,现在让你找到一个方差最小的生成树,即最小方差生成树。看到这题,我们首先回忆一下很久之前做过的一道,求最小极差生成树的题目 CSU 1845 。这套题目里面用到的主要思路就是,最小极差肯定是连续的一段,然后我就按照边的权值大小排序,每次看边是否可以直接加入,如果可以则直接加入,否则在加入这条边之后的环中寻找一条权值最小的边删掉。这样所有的边遍历一遍,中间过程中的极差最小就是我们的解。接着,我们考虑这道题目,显然,这题的方差和极差是有关系的,因为方差越小意味着样本之间越接近原创 2018-08-10 11:25:02 · 863 阅读 · 0 评论 -
CodeForces 1197E Culture Code(最短路/dp)
大致题意:给你n个俄罗斯套娃,告诉你每个套娃内外的半径。问你这里面有多少个集合,可以使得外层不能再套别的套娃而且里面剩余的空间最小。这题的话想到思路还是不难的,无非是套娃的嵌套关系。如果我们找到所有的嵌套关系,我们可以考虑建立一个有向带权图。对于任意的边<u,v,w>表示第u个套娃可以套第v个套娃而且套了的话中间缝隙为w。如此,我们只需要对于这个带权有向图求一下...原创 2019-07-23 13:06:44 · 541 阅读 · 0 评论