P6054 题解

blog。网络流——最小割。


每个选手做某一套题的期望奖励固定,计算方式参考样例解释。这个假期望被去掉了。

发现是典型的「\(m\) 种强制选一」问题。考虑每个人都建一条链,跑最小割,每条链必定割 \(\ge1\) 条边,割哪条边就表示选哪套题。

对于大小关系的限制,例如 \((i,j,k)=(1,2,1)\),那么不能同时割 \(\text{cut}_{1,x}\)\(\text{cut}_{2,y}\)\(x-y\le1\))。限制这种割法仍能够流到汇点即可。

不得不割掉 INF 边时无解,判最终流量即可。注意 Dinic 开 double,判一下浮点数误差,正常实现都可以......拿到 \(80\) 分。

怎么会是呢?原来会存在一条链割掉多条边(一个人做几套题)的情况。不需要像其他题解一样建反向边,只需要为每条边加一个 \(+\infty^*\),最后减掉 \(n\times\infty^*\) 即可。

code,时间复杂度 \(O(\text{能过})\)

posted @ 2024-01-16 18:33  liangbowen  阅读(10)  评论(0编辑  收藏  举报