zoukankan      html  css  js  c++  java
  • 51nod 1499 (最小割)

    题意

    分析

      将一些点分成两个集合,很明显的最小割问题

      设一个S、T,和S相连的点表示在B集合中,和T相连的点表示在A集合中

      因为原题是完美值最大,我们转换一下,变成损失的价值最小,那么就是最小割问题了

      对于两个点(u,v),如果有边相连,那么u->T v->T 权值是|u-v|;如果无边,那么S->u S->v,权值是|u-v|

      光这样够吗?我们发现,如果u和S相连,v和T相连,那么不仅S->v的价值得不到了,S->u的价值也得不到了,那么该如何处理呢?

      我们对于任意一个点对(u,v),都连一条u->v 边权是|u-v|的边,那么出现上面这种情况的时候这条边一定也会被割掉

      这样跑最小割就行了,最后结果除以2

      分析建图可以知道,S->u->v->T 边权都是|u-v|,所以割的时候可以都选择割S->u或者v->T的边,即最后的结果一定是所有点都在A集合中或者B集合中

      这样就优化了复杂度

  • 相关阅读:
    JdbcTemplate
    Spring AOP——基于XML的进阶案例
    Spring
    面试题
    切面编程
    选择题
    Spring核心概念
    缓存
    BFC 神奇背后的原理
    git 教程
  • 原文地址:https://www.cnblogs.com/wmrv587/p/7627255.html
Copyright © 2011-2022 走看看