杂题

题意

\(n\)个点带点权DAG,要选择一段连续的拓扑序上的点,使得点权最大。\(n\le 50\)

做法

一段连续的充要条件为:任意一条路径上为不选-选-不选

将每个点拆成两个\(X_1,X_2\)
对于\((X,Y)\in E\),有\(X_1\longrightarrow Y_1,X_2\longrightarrow Y_2(flow:\infty)\)

  • \(val_X\ge 0\),有\(S\longrightarrow X_1(flow:val_X)\)\(X_2(flow:val_X)\longrightarrow T\)
  • \(val_X<0\),有\(X_1\longrightarrow X_2(flow:|val_X|)\)

答案为\(\sum val_X[val_x\ge 0]-maxflow\)

posted @ 2020-05-27 10:45  Grice  阅读(83)  评论(0编辑  收藏  举报