hdu2955--01背包

简介: 1、Robberies http://acm.hdu.edu.cn/showproblem.php?pid=2955 正确的方程是:f[j]=max(f[j],f[j-q[i].money]*q[i].v) 其中,f[j]表示抢j块大洋的最大的逃脱概率,条件是f[j-q[i].money]可达,也就是之前抢劫过; 始化为:f[0]=1,其余初始化为-1 (抢0块大洋肯定不被抓嘛)#i
1、Robberies http://acm.hdu.edu.cn/showproblem.php?pid=2955
正确的方程是:f[j]=max(f[j],f[j-q[i].money]*q[i].v) 其中,f[j]表示抢j块大洋的最大的逃脱概率,条件是f[j-q[i].money]可达,也就是之前抢劫过;
始化为:f[0]=1,其余初始化为-1 (抢0块大洋肯定不被抓嘛)
#include<stdio.h>
#include<string.h>
double max(double a,double b)
{
    return a>b?a:b;
}
int main()
{
    int n,i,t,total,M[109],j;
    double P[109],p,f[10100];
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lf %d",&p,&n);
        total=0;
        for(i=0; i<n; i++)
        {
            scanf("%d%lf",&M[i],&P[i]);
            total+=M[i];
        }
        f[0]=1;
        for(i=1; i<=total; i++)
            f[i]=0;
        for(i=0; i<n; i++)
            for(j=total; j>=M[i]; j--)
                f[j]=max(f[j],f[j-M[i]]*(1-P[i]));
        for(i=total; i>=0; i--)
            if(f[i]>=(1-p))
            {
                printf("%d\n",i);
                break;
            }
    }
    return 0;
}



目录
相关文章
|
Java
hdu 2566 统计硬币
hdu 2566 统计硬币
59 0
HDU-Robberies(01背包)
HDU-Robberies(01背包)
63 0
HDU-1058,Humble Numbers(丑数打表)
HDU-1058,Humble Numbers(丑数打表)
HDOJ(HDU) 2107 Founding of HDU(找最大值)
HDOJ(HDU) 2107 Founding of HDU(找最大值)
122 0
HDOJ/HDU 2561 第二小整数(水题~排序~)
HDOJ/HDU 2561 第二小整数(水题~排序~)
120 0
HDOJ(HDU) 2061 Treasure the new start, freshmen!(水题、)
HDOJ(HDU) 2061 Treasure the new start, freshmen!(水题、)
141 0
|
Java
HDU 2546 饭卡(01背包裸题)
饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 28562    Accepted Submission(s): 9876 Problem Description 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。
1110 0
|
Java 测试技术
HDU 1248 寒冰王座(完全背包裸题)
寒冰王座 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 17092    Accepted Submission(s): 8800 ...
1222 0

热门文章

最新文章