![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dfs序
11011b
你配不上自己的野心,也辜负了曾经历的苦难
展开
-
洛谷 P2324 [SCOI2005]骑士精神(IDA*(dfs+迭代加深+估值函数))
题目链接:P2324 [SCOI2005]骑士精神题解:IDA*算法其实和A*很相似,A*是在BFS中引入估值函数,而IDA*则是在DFS+迭代加深中引入估值函数,通过估值函数F=G+H,G代表当前点距离起点距离,H代表距离最终状态的近似距离,在本题中我们通过求当前状态点和终点状态的不同点数确定H,G由dfs深度确定,H由当前状态和最终状态的不同点数量决定(若当前存在res个点,则最少也需要res-1次交换),利用迭代加深我们可以在每次搜索时通过判断当前点H+G是否大于当前枚举的最大深度,若是则说明当前原创 2022-04-24 19:30:46 · 639 阅读 · 0 评论 -
Codeforces 1062E Company(树上lca+线段树+dfs序)
题目链接:Company题意:给定一颗n(2<=n<=10^5)个节点的树,和q(2<=n<=10^5次询问,每次询问[l,r],输出从[l,r]删除一个节点后剩余节点的lca对应的节点深度最大的情况,输出删除的点和最大深度题解:观察样例的图我们可以发现,每次删除的节点一定是对应树dfs序最小或者最大的点,那么我们直判断一下删哪边后深度更大即可,但难点就在怎么快速获得区间内公共lca,我们可以用线段树维护区间内dfs序最大和最小的点,每次询问先求出[l,r]内dfs序列最大和原创 2022-03-29 20:12:05 · 929 阅读 · 0 评论