这里给出一个dalao炒鸡详细的解释: https://www.cnblogs.com/stxy-ferryman/p/7779347.html#4073877 Tarjan算法 void Tarjan(int u) { dfn[u]=low[u]=++num; st[++top]=u;//入栈 v ...
分类:
其他好文 时间:
2018-09-21 21:14:58
阅读次数:
290
P3008 [USACO11JAN]道路和飞机Roads and Planes Dijkstra+Tarjan 因为题目有特殊限制所以不用担心负权的问题 但是朴素的Dijkstra就算用堆优化,也显然会超时。 这是因为Dj每次扩展时,总是找到费用最小那个点进行扩展。 而本题的毒瘤数据可以在一个图(设 ...
分类:
其他好文 时间:
2018-09-21 15:11:53
阅读次数:
164
好久没写过这么长的代码了,题解东哥讲了那么多,并查集优化还是很厉害的,赶快做做前几天碰到的相似的题。 ...
分类:
其他好文 时间:
2018-09-20 21:14:29
阅读次数:
155
传送门 一道神奇的DP………(鬼知道他为什么在tarjan里面) 一开始可能会考虑贪心或者什么其他神奇的算法,不过还是DP比较靠谱。 我们用f[i]表示摧毁所有i左侧的炸 药包最少需要的能量,用g[i]表示摧毁所有i右侧的炸 药包最少需要的能量。 那么我们只要找到满足j < i,a[i] - a[j ...
分类:
其他好文 时间:
2018-09-20 16:07:47
阅读次数:
172
传送门 这道题还是比较容易看出是tarjan的。首先我们知道如果学校之间成环的话那么学校之间一定能到达,直接缩成一个点就好了。 缩完点之后我们得到了一个DAG。之后因为子任务A要求的是最少接受新软件的学校有多少个,可以很容易的想出我们只要给所有入度为0的学校发一份就可以了,因为剩下的必然是可以从其他 ...
分类:
Web程序 时间:
2018-09-20 16:06:02
阅读次数:
235
传送门 这道题一开始可能以为是二分图匹配……?不过后来发现和二分图没啥大关系。 简单分析之后发现,把夫妻之间连边(男性向女性连边),之后再将每对曾经是情侣的人连边(女性向男性连边),当然以上的方向可以反过来不过两次连接方向必须相反。这样的话如果婚姻是危险的那么这些就是在一个强连通分量里面的。换句话说 ...
分类:
其他好文 时间:
2018-09-18 22:58:49
阅读次数:
205
"传送门" 看到唯一的依赖关系,容易想到树型dp,即$f_{i,j}$表示选点$i$及子树内连通的点,代价为$j$的最大价值,然后就是选课那道题 但是要注意 1.题目中的依赖关系不一定是树,可能会有环,我们可以发现环里面的点要么全选要么全不选,要用tarjan把环缩为一个点,同时把代价和价值加到缩后 ...
分类:
其他好文 时间:
2018-09-18 22:38:32
阅读次数:
196
刚做了两道tarjan缩点的题,新学的算法总结一下。 推荐题:(难度单调递增) [HAOI2006]受欢迎的牛 [USACO5.3]校园网Network of Schools 间谍网络 [APIO2009]抢掠计划 这里不教tarjan,要学的找别的博客吧。 总结:tarjan 简单来说 算法过程 ...
分类:
其他好文 时间:
2018-09-17 20:32:11
阅读次数:
192
嘟嘟嘟 建图还是很明显的。 接着分两种情况: 1.图中不存在环:那么只要收买那些入度为0的点。如果这些点有的不能收买。就不能控制所有间谍。 2.图中存在环,那么对于这些在环中的点,我们只要收买数额最少的间谍。 于是我们用tarjan缩点:这样把第二种情况就变成了第一种情况。 所以大体流程是:用tar ...
分类:
其他好文 时间:
2018-09-17 19:36:48
阅读次数:
188
先简单叙述一下tarjan算法的执行过程(其他诸如伪代码之类的相关细节可以自己网上搜索,这里就不重复贴出了): 用到两类数组: dfs[]:DFS过程中给定节点的深度优先数,即该节点在DFS中被访问的次序 low[]:从给定节点回溯时,节点的low值为从节点在DFS树中的子树中的节点可以回溯到的栈中 ...
分类:
编程语言 时间:
2018-09-16 19:47:16
阅读次数:
169