zoukankan      html  css  js  c++  java
  • 快乐的一天从AC开始 | 20210710 | P3410

    题目链接

    今天的快乐从0点开始!

    心路历程

    这题看数据范围就猜是网络流,没想到还真是。

    思路

    首先需要介绍闭合图:一个有向图,图内的每一个节点,它能到达的点也属于这个图,称这个图为闭合图。

    将每个生意和超级源点(S)连边,容量为收益。

    将每个下属和超级汇点(T)连边,容量为代价。

    将每个生意,和每个要求的下属连边,容量为INF。

    这样,满足条件的方案构成的图一定是原图的某个闭合子图。

    将割掉一个(S)到生意的边,看成是放弃了这个生意;将割掉一个下属到(T)的边,看成是带上这个下属;如果存在(S)(T)的流,就不符合条件了。所以最终的方案一定是原图的割

    然后就想到了最小割。由于生意和下属的连边为INF,最小割必不可能包含这些边。

    然后,闭合图的权值 = 所有生意的收益和 - 未选生意的收益和 - 选择下属的代价和 = 所有生意收益和 - 割。

    由此,最大权闭合子图的权值 = 所有生意的收益和 - 最小割大小。

    根据最大流最小割定理,跑个dinic最大流完事。

  • 相关阅读:
    wait与sleep区别?
    oracle死锁查询
    atomic 原子操作的类
    买票问题
    0001.第一个多线程demo--分批处理数据
    01: JavaScript实例
    01: 运维工作梳理
    04: 使用BeautifulSoup封装的xss过滤模块
    04: 打开tornado源码剖析处理过程
    03: 自定义异步非阻塞tornado框架
  • 原文地址:https://www.cnblogs.com/zengzk/p/14992908.html
Copyright © 2011-2022 走看看