180 likes | 308 Views
PKU1149 PIGS 解题报告. - Croatia 2002 Final Exam FirstDay 周新彪 00108029 北京大学 01 级 计算机系. 问题描述. 迈克在一个养猪场工作,场里有 M 个猪圈,每个猪圈都上了锁 由于迈克没有钥匙,所以他不能打开任何一个猪圈 顾客一个接一个来到养猪场 每个顾客有一些猪圈的钥匙,而且他们要买一些猪. 问题描述. 所有在某天要到养猪场的顾客,他们的信息是要提前让迈克知道的 这些信息包括顾客所拥有的钥匙、要购买的数量 这样对迈克很有好处:他可以安排销售计划以便卖出最大的数目. 问题描述 - 更为详细的过程.
E N D
PKU1149 PIGS 解题报告 - Croatia 2002 Final Exam FirstDay 周新彪00108029 北京大学01级 计算机系
问题描述 • 迈克在一个养猪场工作,场里有M个猪圈,每个猪圈都上了锁 • 由于迈克没有钥匙,所以他不能打开任何一个猪圈 • 顾客一个接一个来到养猪场 • 每个顾客有一些猪圈的钥匙,而且他们要买一些猪
问题描述 • 所有在某天要到养猪场的顾客,他们的信息是要提前让迈克知道的 • 这些信息包括顾客所拥有的钥匙、要购买的数量 • 这样对迈克很有好处:他可以安排销售计划以便卖出最大的数目
问题描述-更为详细的过程 • 当每个顾客到来时,他将那些他拥有钥匙的猪圈全部打开 • 迈克从这些猪圈中挑出一些猪卖给他们 • 如果迈克愿意,迈克可以重新分配这些被打开的猪圈中的猪 • 猪圈再次被锁上 • 注意:猪圈可容纳的猪的数量没有限制
输入格式 • 第一行是两个整数:M和N(1≤M≤1000,1≤N≤100) • M是猪圈的数目,N是顾客的数目 • 第二行是M个整数,为每个猪圈中初始猪的数目,范围是[0,1000]
输入格式-续 • 接下来的N行是顾客的信息,第i个顾客的信息保存在第i+2行 • 顾客信息:A K1 K2…KA B • A为拥有钥匙的数目,Kj表示拥有第Kj个猪圈的钥匙 • B为该顾客想买的猪的数目 • A,B均可为0
输出格式 • 有且仅有一行 • 能够卖掉的猪的最大数目
Sample Input and Output Sample input 3 3 3 1 10 2 1 2 2 2 1 3 3 1 2 6 Sample Output 7
网络最大流问题 V1 5 4 5 V2 T S 4 4
任作可行方案 V1 5,0 4,4 5,4 V2 T S 4,4 4,0
增广图的作法 • 凡是已经分配流量的边,均画出反向边,反向边的容量为现有方案中分配的流量数 • 凡是分配的流量小于容量的边照常画,但容量改为原容量和流量的差 • 容量等于流量,该边不可画
增广图 V1 5 4 1 4 V2 T S 4 4
继续寻找可行方案 V1 5,4 4,0 1,0 4,4 V2 T S 4,0 4,4
与原图叠加 V1 5,4 4,4 5,0 V2 T S 4,4 4,4
没有可行方案了 V1 1 4 5 4 V2 T S 4 4
怎样构造网络流 • 将顾客看作除源和漏以外的节点 • 源和每个猪圈的第一个顾客连边,边的权是开始时猪圈中猪的数目 • 若源和某个节点之间有重边,则将权合并 • 顾客j紧跟在顾客i之后打开某个猪圈,则边<i,j>的权是+∞ • 每个顾客和漏之间连边,边的权是顾客所希望购买的猪的数目
回归原题 V1 2 4 +∞ V1 +∞ 6 T S 10 V2 3