蒜头君很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了。要申请国外的任何大学,你都要交纳一定的申请费用,这可是很惊人的。蒜头君没有多少钱,总共只攒了n万元。他将在m个学校中选择若干的(当然要在他的经济承受范围内)。每个学校都有不同的申请费用a (万美元),并且蒜头君估计了他得到这个学校offer的可能性b。

不同学校之间是否得到offer不会互相影响。"I NEED A OFFER",他大叫一声。帮帮这个可怜的人吧,帮助他计算一下,他可以收到至少一份offer的最大概率。 (如果蒜头君选择了多个学校,得到任意一个学校的offer都可以)。

输入格式

第一行有两个正整数n,m(0≤n≤10000,0≤m≤10000)。

后面的m行,每行都有两个数据ai (整型), bi (实型)分别表示第i个学校的申请费用和可能拿到offer的概率。

输出格式

每组数据都对应一个输出,表示蒜头君可能得到至少一份offer的最大概率。百分数表示,精确到小数后一位。

样例输入

 0.1
0.2
0.3

样例输出

44.0%

01背包问题

这里我们的状态转移方程会和前面的01背包的状态转移方程发生变化。

dp[j]表示花费j元,至少可以拿到一个学校的offer的概率。

当有一所学校是花费x元拿到offer的概率是y。所以这个时候就是1.0-(1- dp[j-x])*(1-y),先计算一 个都考不上的概率,然后它的补集即是至少可以考上一个学校的概率。

状态转移方程:

dp[j]= max(dp[j],1.0-(1- dp[j-x])*(1- y))

 #include <stdio.h>
#include <string.h>
#include <iostream>
#include <string>
#include <math.h>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <sstream>
#include <ctime>
const int INF=0x3f3f3f3f;
typedef long long LL;
const int mod=1e9+;
const LL MOD=1e9+;
const double PI = acos(-);
const double eps =1e-;
#define Bug cout<<"---------------------"<<endl
const int maxn=1e5+;
using namespace std; int a[];
double b[];
double dp[]; int main()
{
#ifdef DEBUG
freopen("sample.txt","r",stdin);
#endif
// ios_base::sync_with_stdio(false);
// cin.tie(NULL); int n,m;
scanf("%d %d",&n,&m);
for(int i=;i<=m;i++)
scanf("%d %lf",&a[i],&b[i]);
for(int i=;i<=m;i++)
{
for(int j=n;j>=a[i];j--)
dp[j]=max(dp[j],1.0-(-dp[j-a[i]])*(-b[i]));
}
printf("%.1f%%\n",dp[n]*); return ;
}

-

offer(背包问题、DP)的更多相关文章

  1. poj 1742 多重背包问题 dp算法

    题意:硬币分别有 A1.....An种,每种各有C1......Cn个,问组成小于m的有多少种 思路:多重背包问题 dp[i][j]表示用前i种硬币组成j最多剩下多少个  dp=-1的表示凑不齐 dp ...

  2. 2014 Super Training #7 C Diablo III --背包问题(DP)

    原题: ZOJ 3769 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3769 一个带有一些限制的背包问题. 假设在没有限 ...

  3. HDU 1203 I NEED A OFFER!(dp)

    Problem Description Speakless很长时间,我想出国.现在,他已经完成了所有需要的检查.准备好所有要准备的材料,于是,便须要去申请学校了.要申请国外的不论什么大学.你都要交纳一 ...

  4. hdu1203 I NEED A OFFER!---概率DP(01背包)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1203 题目大意:Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材 ...

  5. 普通01背包问题(dp)

    有n个物品,重量和价值分别为wi和vi,从这些物品中挑选出重量不超过W的物品,求所有挑选方案中物品价值总和的最大值 限制条件: 1 <= n <= 100; 1 <= wi,vi & ...

  6. hdoj1203 I NEED A OFFER!(DP,01背包)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1203 思路 求最少能收到一份offer的最大概率,可以先求对立面:一份offer也收不到的最小概率,然 ...

  7. 背包问题 (DP)

    利用记忆化数组.记dp[i][j]为根据rec的定义,从第i个物品开始挑选总重小于j时,总价值的最大值. 递推式: dp[i][j]=0     (j<w[i]) dp[i][j] dp[i][ ...

  8. HDU 2844 Coins (多重背包问题DP)

    题意:给定n种硬币,每种价值是a,数量是c,让你求不大于给定V的不同的价值数,就是说让你用这些硬币来组成多少种不同的价格,并且价格不大于V. 析:一看就应该知道是一个动态规划的背包问题,只不过是变形, ...

  9. HDU 1203 I NEED A OFFER! (dp)

    题目链接 Problem Description Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了.要申请国外的任何大学,你都要交纳一定 ...

  10. 背包问题(dp基础)

    题目描述: 在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2……Wn(Wi为整数),与之相对应的价值为P1,P2……Pn(Pi为整数).求背包能够容纳的最大价值. Input 第1 ...

随机推荐

  1. python计算:pi/4=1-1/3+1/5-1/7+…

    当有一项的绝对值小于10e-6停止计算 def cul() : ans = 0;add = 1 sign = 1 while(1/add>10**(-6)) : ans = ans + sign ...

  2. Floyd--P2419 [USACO08JAN]牛大赛Cow Contest

    *传送 FJ的N(1 <= N <= 100)头奶牛们最近参加了场程序设计竞赛:).在赛场上,奶牛们按1..N依次编号.每头奶牛的编程能力不尽相同,并且没有哪两头奶牛的水平不相上下,也就是 ...

  3. 吴裕雄--天生自然C++语言学习笔记:C++ 指针

    每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址. #include <iostream> using namesp ...

  4. spring源码 BeanFactory根接口

    /* * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Vers ...

  5. java反射的认知和学习

    1.学习了Class对象,Filed对象(对应数据),Method对像(对应函数),Constructor对象(对应构造函数). 2.Declared可用于获取私有的数据和方法,但是打印得使用setA ...

  6. 基于Ambari的WebUI部署Hive服务

    基于Ambari的WebUI部署Hive服务 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.部署Ambari服务 博主推荐阅读: https://www.cnblogs.com ...

  7. Loading PDSC Debug Description Failed for STMicroelectronics STM32Lxxxxxxx”

    今天在调程序的时候遇到这个问题 解决办法:将安装在MDK下面的文件属性由只读去掉: 成功!可以下载.

  8. 数据库连接池DBCP的使用

    一.直接使用代码链接(一般企业开发不用这种方式) 1.导入JAR 把jar包拷贝到lib文件夹里面然后右击 build path一下 2.建一个jdbc.proprtties文件 driverClas ...

  9. [题解] Luogu P2000 拯救世界

    生成函数板子题...... 要写高精,还要NTT优化......异常dl 这个并不难想啊...... 一次召唤会涉及到\(10\)个因素,全部写出来,然后乘起来就得到了答案的生成函数,输出\(n\)次 ...

  10. linux搭建mariadb,windows2008搭建iis+php+wordpress

    centos ip:192.168.101 windows ip :192.168.102 centos配置: [root@ml ~]# yum -y install mariadb-server # ...