• 洛谷 P3410 拍照


    洛谷 P3410 拍照

    题目描述

    小B有n个下属,现小B要带着一些下属让别人拍照。

    有m个人,每个人都愿意付给小B一定钱让n个人中的一些人进行合影。如果这一些人没带齐那么就不能拍照,小B也不会得到钱。

    注意:带下属不是白带的!!!对于每个下属,如果他带了那么小B需要给他一些钱,保证当他拍照时配合。

    请问,小B的净收益最多是多少。

    输入输出格式

    输入格式:

    第1行有2个正整数m和n(0<m,n<=100)。接下来的m行,每行是一个要求拍照的人的有关数据。第一个数是他同意支付该合影的费用;接着是该合影需要的若干下属的编号,以一个0作为行的结束标记。最后一行的n个数是带每个下属的费用。

    输出格式:

    一个数,表示最大收益。小B可以一个人也不带。

    输入输出样例

    输入样例#1: 复制
    2 3
    10 1 2 0
    25 2 3 0
    5 6 7
    输出样例#1: 复制
    17

    说明

    对于10%的数据每个人都要求让全部n个人合影

    对于30%的数据n<=15 m<=15

    另有10%的数据答案为0

    对于50%的数据n<=40 m<=40

    另有10%的数据每个人只愿意拍一个人

    对于100%的数据m,n<=100

    分析:这道题对我来说是网络流的一个新知识点:最大权闭合子图。其主要适用于类似本题的一类选派问题,即:两个集合A和B,已知一些关系集合Ci,满足其是A的子集,而i属于B,当Ci中元素均被选中时,有一个价值Vi,而每个元素有一个花费costi。这时只要建立源点S和汇点T,从S向每个Ci连边,流量限制为价值Vi,然后由A中每个元素向T连边,流量限制为costi,最后按照选派关系在中间连边,流量限制为inf,最后求全图最小割,也就是最大流,就是这个网络的最大权闭合子图的权值,至于具体证明我并不会。。不过有个博客讲的很清楚(非常建议看)传送门。注意求完权值得到的是最小花费,也就是假设了所有价值已经到手,此时答案就是总价值-最小花费。

    另外这道题可能因为价值与花费较大,普通网络流算法可能会被卡(也可能是我的网络流常数太大QAQ),要使用效率更高的。(我用的是Dinic)

    代码

    代码

  • 相关阅读:
    Java Exception
    SuggestFrameWork js代码结构
    博客被管理员丢出来之心情
    HDU--杭电--1195--Open the Lock--深搜--都用双向广搜,弱爆了,看题了没?语文没过关吧?暴力深搜难道我会害羞?
    HDU--杭电--1026--Ignatius and the Princess I--广搜--直接暴力0MS,优先队列的一边站
    HDU--1232--畅通工程--并查集
    杭电--1102--Constructing Roads--并查集
    杭电--1879--继续畅通工程--并查集
    杭电--1875--畅通工程再续--并查集
    杭电--1272--小希的迷宫--并查集
  • 原文地址:https://www.cnblogs.com/xuzihanllaa/p/7967602.html
Copyright © 2020-2023  润新知