CSPS_102

    $\Huge % Dybala$

 

    T1 神奇单调栈,但是有点码农,要对着对拍调很久。

    T2

      观察到队长跑到i点之后,前面的[1,i)的点都被经过了偶数次,再次到达的时候又得被暗杀

      所以通过点i的花费可以看成一个区间和的形式

    T3

      按拓扑序枚举。

      由于起点&终点未知,建超级源汇。

      然后最长路一定以源开始,以汇结束了。

      如何在删去一个点以后抹除所有经过它的最长路?

      考虑把最长路的长度唯一存储在边中,那么删掉这条边就删掉了经过它的最长路

      如何保证唯一存储?

      由于最长路也是在原图的拓扑序中的,只要保证数据结构中不存在有祖先关系的两条边,则一条路一定经过数据结构中的有且只有一条边。

      就沿着拓扑序枚举就行了,删掉入边加入出边,是满足上述条件的。

      删之后加之前,数据结构里的最大值就是不经过这个点的最长路。

posted @ 2019-11-06 10:18  Yxsplayxs  阅读(171)  评论(12编辑  收藏  举报