codeforces 167B Wizards and Huge Prize (概率dp,类似背包)

博客详细解析了Codeforces 167B题目,这是一个涉及概率和动态规划的问题。比赛赢的概率与奖励金币或背包扩容相关。通过转移dp状态,将有序决策转化为无序,最终找到至少赢l局且背包能装下所有奖励的最大概率。解题关键在于处理背包单位移和寻找200至400之间的dp值。
摘要由CSDN通过智能技术生成

题意:

给出n个比赛,每个比赛都有赢的概率pi,并且能得到一定的钱,但是钱需要背包装,比赛赢了分两个情况:一个是获得金币,一个是将背包扩容,如果值为-num表示得到num的金币,如果是正表示背包扩容。问至少赢了l局并且背包能装下的最大概率。

题解:

很明显的概率dp,类似于背包,和之前做的比起来简直简单爆了。两个决策一个取一个不去。

dp[i][j][k]表示前i个比赛赢了j个比赛还剩的容量k,所得的最大概率。注意这题是有顺序的,比如我先打最后一个等有足够的背包了在回去打是可以的。那么怎么才能让他无序?我们可以将背包右移200个的单位。这样200以下的就代表负值的背包,这样就不用考虑顺序,前面的情况会转移到后面处理。最后只要去背包在200到400之间的dp就好了(因为最后的背包剩余容量肯定要是大于0的)


#include<iostream>
#include<math.h>
#include<stdio.h>
#include<algorithm>
#include<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值