BSOJ: 3748 【USACO 2006 March Gold】Milk Team Select产奶比赛

Description Farmer John的N(1<=N<=500)头奶牛打算组队去参加一个世界级的产奶比赛(Multistate Milking Match-up,缩写为MMM)。她们很清楚其他队的实力,也就是说,她们派出的队只要能产出至少X(1<=X<=1,000,000)加仑牛奶,就能赢得这场比赛。每头牛都能为集体贡献一定量的牛奶,数值在-10,000到10,000之间(有些奶牛总是想弄
摘要由CSDN通过智能技术生成

Description
Farmer John的N(1<=N<=500)头奶牛打算组队去参加一个世界级的产奶比赛(Multistate Milking Match-up,缩写为MMM)。她们很清楚其他队的实力,也就是说,她们派出的队只要能产出至少X(1<=X<=1,000,000)加仑牛奶,就能赢得这场比赛。

每头牛都能为集体贡献一定量的牛奶,数值在-10,000到10,000之间(有些奶牛总是想弄翻装着其他奶牛产的奶的瓶子)。

MMM的举办目的之一,是通过竞赛中的合作来增进家庭成员之间的默契。奶牛们认为她们总是能赢得这场比赛,但为了表示对比赛精神的支持,她们希望在选出的队伍里能有尽可能多的牛来自同一个家庭,也就是说,有尽可能多对的牛有直系血缘关系(当然,这支队伍必须能产出至少X加仑牛奶)。当然了,所有的奶牛都是女性,所以队伍里所有直系血亲都是母女关系。

FJ熟知所有奶牛之间的血缘关系。现在他想知道,如果在保证一支队伍能赢得比赛的情况下,队伍中最多能存在多少对血缘关系。注意,如果一支队伍由某头奶牛和她的母亲、她的外祖母组成,那这支队伍里一共有2对血缘关系(这头奶牛外祖母与她的母亲,以及她与她的母亲)。
Input
第1行: 两个用空格隔开的整数 N 和 X

第2..N+1行: 每行包括两个用空格隔开的整数,第i+1行的数描述了第i头牛的情况:第一个数为她能贡献出的牛奶的加仑数,第二个数表示她的母亲的编号(数值在1..N的范围内)。如果一头牛的母亲不在整 个牛群里,那第二个数为0。并且,血缘信息不会出现循环,也 就是说一头奶牛不会是自己的母亲或祖母,或者更高代的祖先
Output
* 第1行: 输出在一个能获胜的队伍中,最多可能存在的有血缘关系的牛的对数 。如果任何一支队伍都不可能获胜,输出-1
Sample Input
5 8
-1 0
3 1
5 1
-3 3
2 0

输入说明:
FJ一共有5头奶牛。第1头奶牛能提供-1加仑的牛奶,且她是第2、第3头奶牛的母亲。第2、第3头奶牛的产奶量分别为3加仑和5加仑。第4头奶牛是第3头奶牛的女儿,她能提供-3加仑牛奶。还有与其他牛都没有关系的第5头奶牛,她的产奶量是2加仑。
Sample Output
2

输出说明:
最好的一支队伍包括第1,2,3,5头奶牛。她们一共能产出(-1)+3+5+2=9>=8加仑牛奶,并且这支队伍里有2对牛有血缘关系(1–2 和 1–3)。如果只选第2,3,5头奶牛,虽然总产奶量会更高(10加仑),但这支队伍里包含的血缘关系的对数比上一种组合少(队伍里没有血缘关系对)。

这个题要注意细节和优化。
我最先推出的DP方程很复杂。
然后逐渐优化,和简化,
去掉重复计算的状态。
最后是这个样子:

F[i][j][flag]=i(i)j
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值