http://acm.hdu.edu.cn/showproblem.php?pid=2955

这道题求不被抓时的最大金钱。金额是整数,概率是小数。因为数组小标不能是小数,所以我们可以以钱作为weight,概率作为value

这说明解背包问题时cost和weight不是定死的,是可以相互转换的。

以银行的的总金额作为V,安全概率作为value,金额作为cost,安全概率=各家银行安全概率之积

#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <stack>
using namespace std; #define MEM(a,b) memset(a,b,sizeof(a))
#define pf printf
#define sf scanf
#define debug printf("!/m")
#define INF 8000
#define MAX(a,b) a>b?a:b
#define blank pf("\n")
#define LL long long
#define ep 1e-6 double dp[INF]; double ci[INF];//容量
int wi[INF];//价值
int n,V,i,j,v,t,sum;
double vi; void zeroOnePack(int cost,double weight)
{
for(v = sum;v>=cost;v--)
{
dp[v] =MAX(dp[v],dp[v-cost]*weight);
}
} void completePack(int cost,int weight)
{
for(v = cost;v<=V;v++)
{
dp[v] =MAX(dp[v],dp[v-cost]+weight);
pf("tt%d %d %d\n",i,v,dp[v]);
} } int main()
{ sf("%d",&t);
while(t--)
{
sf("%lf%d",&vi,&n); MEM(dp,);
dp[] = 1.0; MEM(ci,);
MEM(wi,); vi = -vi; sum = ; for(i = ;i<=n;i++)
{
sf("%d",&wi[i]);
sf("%lf",&ci[i]);
ci[i] = -ci[i];
sum+=wi[i];
} for(i = ;i<=n;i++)
{
zeroOnePack(wi[i],ci[i]);
} for(i = sum;i>=;i--)
{
if(dp[i]-vi>0.000000001)
{
pf("%d\n",i);
break;
}
}
}
return ;
}

78MS

HDU 2955(01背包)的更多相关文章

  1. hdu 2955 01背包

    http://acm.hdu.edu.cn/showproblem.php?pid=2955 如果认为:1-P是背包的容量,n是物品的个数,sum是所有物品的总价值,条件就是装入背包的物品的体积和不能 ...

  2. HDU 2955 01背包(思维)

    Robberies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  3. Robberies hdu 2955 01背包

    Robberies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  4. hdu 1203 01背包 I need a offer

    hdu 1203  01背包  I need a offer 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1203 题目大意:给你每个学校得到offe ...

  5. HDU 2955 Robberies 背包概率DP

    A - Robberies Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submi ...

  6. poj3211Washing Clothes(字符串处理+01背包) hdu1171Big Event in HDU(01背包)

    题目链接: id=3211">poj3211  hdu1171 这个题目比1711难处理的是字符串怎样处理,所以我们要想办法,自然而然就要想到用结构体存储.所以最后将全部的衣服分组,然 ...

  7. hdu 1864 01背包 最大报销额

    http://acm.hdu.edu.cn/showproblem.php?pid=1864 New~ 欢迎“热爱编程”的高考少年——报考杭州电子科技大学计算机学院关于2015年杭电ACM暑期集训队的 ...

  8. [HDOJ1171]Big Event in HDU(01背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1171 许多有价值的物品,有重复.问如何将他们分成两堆,使两堆价值之差最小. 对价值求和,转换成01背包 ...

  9. HDU 2639 01背包(分解)

    http://acm.hdu.edu.cn/showproblem.php?pid=2639 01背包第k优解,把每次的max分步列出来即可 #include<stdio.h> #incl ...

  10. HDU 1171 01背包

    http://acm.hdu.edu.cn/showproblem.php?pid=1171 基础的01背包,求出总值sum,背包体积即为sum/2 #include<stdio.h> # ...

随机推荐

  1. 【bug】—— IE8 ajax 报错:no transport

    如题,我使用$.ajax()方法请求数据,在现代浏览器中工作正常,但在 IE 8 下,会有报错:no transport 从 stackoverflow 中获知,出现这个问题是因为** IE 8 不支 ...

  2. jmeter - jp@gc - Active Threads Over Time(多台负载用户)

    问题: 线程数设置:30,远程启动2台机子 查看 jp@gc - Active Threads Over Time图,发现只统计了1台机子的线程数,线程数并不是60: 解决办法: 官方文档中提到: 1 ...

  3. [性能分析]linux文件描述符

    1.什么是文件和文件描述符 Linux中文件可以分为4种:普通文件.目录文件.链接文件和设备文件.1.普通文件是用户日常使用最多的文件,包括文本文件.shell脚本.二进制的可执行和各种类型的数据.l ...

  4. knova绘制矩形

    效果: 源码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  5. Web安全学习笔记——SQL注入

    一.MySQL注入 1. 常用信息查询 常用信息: 当前数据库名称:database() 当前用户:user() current_user() system_user() 当前数据库版本号:@@ver ...

  6. 开源一个Java Class实现Openfire登陆、推出、消息发送,方便其他系统集成IM功能了

    开源一个Java Class实现Openfire登陆.推出.消息发送 N年前写的,希望对Openfire开发新手有帮助哦 import java.util.*; import java.io.*;   ...

  7. 开发者必备的12个JavaScript库

    现在 web 设计是最有趣的了,做好 web 设计不仅要熟练使用 Javascript,css 和 html 等,还要有自己的创意设计.为了方便大家发挥自己的创意,就产生了很多 JS 框架,Node. ...

  8. sql geography类型(地理坐标) 赋值

    sql 语句赋值 update [lishui].[dbo].[t_NearbyService] ,, ) ,[locationbaidu]=geography::Point(,, ) where [ ...

  9. eclipse修改Properties资源文件的默认编码

    在eclipse下,打开window-->preferences-->general-->content Types-->java Properties File 将其编码方式 ...

  10. 我和ARM的那些事儿3 beep之旅,最详细的ARM裸机工程设置

    前言 在博客园里面我搜索了老半天,找相应的mini2440的裸机开发的程序,让我挺失望的就是居然没有人对做arm这块做详细的解答,到底如何去做,到底如何去配置,都不清楚,让我很纠结,那么我花了近一星期 ...