/*
* hdu-1588 roberies
* mike-w
* 2012-5-13
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_M 11111
float opt[MAX_M];
int main(void)
{
#ifndef ONLINE_JUDGE
freopen("in","r",stdin);
#endif
int ncase,nbank;
int i,j,m;
float maxp,p;
scanf("%d",&ncase);
while(ncase-->0)
{
scanf("%f%d",&maxp,&nbank);
maxp=1-maxp;
memset(opt,0,sizeof(opt));
opt[0]=1.0;
for(i=0;i<nbank;i++)
{
scanf("%d%f",&m,&p);
p=1-p;
for(j=10000;j>=m;j--)
if(opt[j-m]>0 && opt[j-m]*p>opt[j])
opt[j]=opt[j-m]*p;
}
for(i=10000;i>=0 && opt[i]<maxp;i--)
;
printf("%d\n",i);
}
return 0;
}
HDU-2955 背包问题
最新推荐文章于 2022-04-05 10:44:25 发布
本文提供了一种解决HDU 1588 Robberies问题的有效算法实现,通过动态规划的方法计算在给定失败概率下能够抢劫的最大银行数目,代码清晰展示了从输入读取到最终输出的全过程。
1352

被折叠的 条评论
为什么被折叠?



