摘要: 原来这种题的解法是费用流。 从一个方格的左上走到右下,最多走k次,每个数最多拿走一次。 每次走动的流量设为1,起始点拆点成限制流量k。 每个点拆成两条路,一条路限制流量1,费用为价值相反数。另一条路无限流量。 跑一遍费用流。 阅读全文
posted @ 2019-03-29 22:36 韵意 阅读(150) 评论(0) 推荐(0) 编辑
摘要: https://www.luogu.org/problemnew/show/P2774 把两个相邻的节点连边,这些边就是要方便最小割割断其他边存在的,容量无穷。 这种类似的问题的话,把二分图的一部分(黑点)连S,容量为其价值,另一部分(白点)连T,容量也是其价值。 因为上面的边存在我们在最小割的时候 阅读全文
posted @ 2019-03-29 21:16 韵意 阅读(177) 评论(0) 推荐(0) 编辑
摘要: https://www.luogu.org/problemnew/show/P2055 这是一个错误的示范。 一开始觉得就找一条路从外校同学连到本校同学然后最终从周末回家的同学流出,每个人睡后一个人的床就可以了。 首先我没有考虑人不能分身,导致可能会有两条路经过同一个同学。 然后我把这个同学拆点限制 阅读全文
posted @ 2019-03-29 12:13 韵意 阅读(182) 评论(0) 推荐(0) 编辑
摘要: https://www.luogu.org/problemnew/show/P4452 又一道看题解的费用流。 注意时间也影响节点,像题解那样建边就少很多了。 阅读全文
posted @ 2019-03-29 09:48 韵意 阅读(231) 评论(0) 推荐(0) 编辑
摘要: #include using namespace std; const int MAXN=10000; const int MAXM=100000; const int INF=0x3f3f3f3f; struct Edge{ int to,next,cap,flow,cost; }edge[MAXM]; int head[MAXN],tol; int pre[MAXN],dis[MA... 阅读全文
posted @ 2019-03-29 08:45 韵意 阅读(218) 评论(0) 推荐(0) 编辑