标签:amp scp span 最长路 观察 存在 数据 开始 一个
$\Huge % Dybala$
T1 神奇单调栈,但是有点码农,要对着对拍调很久。
T2
观察到队长跑到i点之后,前面的[1,i)的点都被经过了偶数次,再次到达的时候又得被暗杀
所以通过点i的花费可以看成一个区间和的形式
T3
按拓扑序枚举。
由于起点&终点未知,建超级源汇。
然后最长路一定以源开始,以汇结束了。
如何在删去一个点以后抹除所有经过它的最长路?
考虑把最长路的长度唯一存储在边中,那么删掉这条边就删掉了经过它的最长路
如何保证唯一存储?
由于最长路也是在原图的拓扑序中的,只要保证数据结构中不存在有祖先关系的两条边,则一条路一定经过数据结构中的有且只有一条边。
就沿着拓扑序枚举就行了,删掉入边加入出边,是满足上述条件的。
删之后加之前,数据结构里的最大值就是不经过这个点的最长路。
标签:amp scp span 最长路 观察 存在 数据 开始 一个
原文地址:https://www.cnblogs.com/yxsplayxs/p/11803509.html