zoukankan      html  css  js  c++  java
  • bzoj 4322 东西分配问题

    问题:有n个东西,分给m个人,对于每个东西,每个人有喜欢与不喜欢两种态度:like[i][j],如果喜欢,那么他得到该东西时增加的喜悦度为k,否则为1,问是否存在一种分法,使得每个人都达到该人的最低喜悦度b[i]。

    建模方法:

    src->thing[i] cost = 0, cap = 1

    kid[i]->dst : if b[i]/k != 0 : cost = k, cap = b[i]/k

            if b[i]%k!=0 : cost = b[i]%k, cap = 1

    thing[i]->kid[j] : if like[j][i] : cost = 0, cap = 1

    求出最大费用最大流:cost, flow

    如果:cost+(n-flow) >= sum of b,则存在一种分法。
    否则不存在。

    ————————————

    收获:

      1、“该区分的区分,该不区分的不区分”,本题而言,对于所有喜欢的东西,如果它选了p个,那么选的p个对kid而言不区分,所以用流量表示个数,费用表示一个的贡献。

        对于kid不喜欢的东西,也是一类不区分的,只需要知道还差几个不区分的就行了。

      2、“最大化必须的”。。。。。。

  • 相关阅读:
    【LeetCode】- Valid Palindrome(右回文)
    高榕资本宾悦:未使用的企业家Testin云测试服务类故障
    2015第17周三专注
    2015第17周二
    2015第17周一
    2015第16周日
    2015第16周六学习java建议
    2015第16周五
    2015第16周四自控力
    2015第16周三知道做到
  • 原文地址:https://www.cnblogs.com/idy002/p/4528978.html
Copyright © 2011-2022 走看看