杂题
题意
\(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\)