题目链接:
https://www.luogu.com.cn/problem/P1935
思路来源博客:
https://www.luogu.com.cn/blog/sjf-a-newcomer/solution-p1935
这个博客对这类题目的解释非常到位,一定要再看
算法:1:最小割 Dinic+当前弧优化 不在一类额外奖励转化为在一类额外奖励
思路:
1:这道题和这类题目的其它题型区别在于,其它题两个元素在同一个集合就会有附加权值,而这道题是两个元素不在同一个集合才会有附加权值,现在就看如何转换
2:直接把其中一种颜色的a和b权值交换就行了,这样两个位置本来要选择不一样才会有附加权值,现在变成了两个位置集合相同才会有附加权值,于是就变成了我们熟悉的那种类型了
图解:
代码:
#include <bits/stdc++.h>
#define xuhao(i,j) ((i-1)*m+j)
#define hefa(i,di,top) (di<=i&&i<=top)
//Dinic+当前弧优化
u