题解【G-Trading Cards】
m套牌的组合,cj表第j套有多少张牌,wj表示第j套牌的价值
你想要的两套牌里重叠的部分牌,都只需要总共一张就行了,也就是你只需要考虑每张牌有无,而不需要考虑要多少张
问你最多能赚多少钱?
P2 新学知识
图割介绍(虽然介绍的很详细,但好似算法有破绽???下面情况让其可能并不是最小这个条件,但如过加入每次先访问最小边,应当就对了,也不应当,还应当沉下心来继续学习)

P3 用到的模板
P4 题目思路
1.(pre)不能使用DP,因为如果当成背包问题来做,前面的套数的选择会影响后面的套数的profit和cost,前面不选的set到后面和另外的set拼凑就要选了,不满足“当前最优包括子最优这一条件”
2.由于卖出已拥有的卡片对答案没有影响(若需要已拥有的卡组成卡组,则收益为0,可以视作先卖出再买进,否则直接卖出),
所以我们先将所有的卡片卖给市场。
那么我们现在的卡片有两种状态:①要么还在市场里②要么买走这个卡和其他的卡组成卡组并卖给Jeremy
考虑将市场为源点,Jeremy为汇点,市场向每个卡片连一条容量为其价值的边
每个卡组向Jeremy连一条容量为其价值的边
那么删除市场连向卡片的边表示情况②
删除卡组和Jeremy的边表示不选这个卡组
化简题目给的式子,则有
收益=所拥有卡的价值和-买入卡的花费 + 选的卡组的价值和
=所拥有卡的价值和-买入卡的花费 + 所有的卡组的价值和 - 不选的卡组的价值和
=所拥有卡的价值和 + 所有的卡组的价值和 - (不选的卡组的价值和 + 买入卡的花费)
=所拥有卡的价值和 + 所有的卡组的价值和 - (删除边使得源点和汇点不联通的价值和)
=所拥有卡的价值和 + 所有的卡组的价值和 - 图的割
为了防止卡组和卡片的连边被删除,则卡片和卡组连一条∞的边
为了最大化收益,则收益 =所拥有卡的价值和 + 所有的卡组的价值和 - 图的最小割。
再学习图割,完美!
P5 代码解析
P6 奇怪的感悟们
over

浙公网安备 33010602011771号