例题

模板地址


基本思路

  • 首先,肯定是要对于每个同学进行文科与理科满意值的比对,并取较大的满意值。
  • 接下来要考虑的是每个同学的same_art[i][j]与same_science[i][j]值。
  • 可以想到,既然在不考虑周围同学的情况下可以利用网络流的性质进行每个独立同学的文科最大流与理科最大流进行比对,并取较大的满意值,那么完全可以把每个同学和这个同学周围的四个同学当成"绑在一条绳上的蚂蚱",将他们的单人满意值与same_art[i][j]共同比对。
  • 可以想象成有一个自来水管道,在第一种情况下,自来水公司与住户与下水道都是一对一的管道。而在增加了same_art[i][j]与same_science[i][j]属性后,等价于对于每个住户增加了两条容量分别为same_art[i][j]和same_science[i][j]的管道,并对两条管道的容量也进行比对。在Dinic算法的过程中就求得了整体最大的容量最小割。
  • 最小割等价于这些边的容量较小。换言之,我们需要较大的边权总容量。
  • 网络总容量与最小割相减即可。