SCU 2941 I NEED A OFFER!(01背包变形)
| 64bit IO Format: %lld & %llu |
Description
Description
Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,
于是,便需要去申请学校了。要申请国外的任何大学,你都要交纳一定的申请费用,
这可是很惊人的。Speakless没有多少钱,总共只攒了n万美元。他将在m个学校中选择若干的
(当然要在他的经济承受范围内)。每个学校都有不同的申请费用a(万美元),
并且Speakless估计了他得到这个学校offer的可能性b。不同学校之间是否得到offer不会互相影响。
“I NEED A OFFER”,他大叫一声。帮帮这个可怜的人吧,帮助他计算一下,
他可以收到至少一份offer的最大概率。
(如果Speakless选择了多个学校,得到任意一个学校的offer都可以)。
Input
输入有若干组数据,每组数据的第一行有两个正整数n,m(1<=n<=10000,1<=m<=1000)
后面的m行,每行都有两个数据ai(整型),bi(实型)分别表示第i个学校的申请费用和可能拿到offer的概率。
输入的最后有两个0。
Output
每组数据都对应一个输出,表示Speakless可能得到至少一份offer的最大概率。
用百分数表示,精确到小数点后一位。
Sample Input
10 3
4 0.1
4 0.2
5 0.3
0 0
Sample Output
44.0%
Source
Speakless @ Gardon - DYGG's contest 2
题目链接:SCU 2941
初看跟小数背包有那么点像,但其实略有不同,这题的背包体积还是当前拥有的钱,只是转移方程稍微变一下,算至少一份offer不好算,但是算不出现offer的几率好算,把不出现的几率相乘起来就可以了,每次取min使得不出现几率最小,反过来出现一份offer的几率就是最大了……
代码:
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<sstream>
#include<cstring>
#include<bitset>
#include<cstdio>
#include<string>
#include<deque>
#include<stack>
#include<cmath>
#include<queue>
#include<set>
#include<map>
using namespace std;
#define INF 0x3f3f3f3f
#define CLR(x,y) memset(x,y,sizeof(x))
#define LC(x) (x<<1)
#define RC(x) ((x<<1)+1)
#define MID(x,y) ((x+y)>>1)
typedef pair<int,int> pii;
typedef long long LL;
const double PI=acos(-1.0);
const int N=10010;
int c[N];
double w[N];
double dp[N];
void zonepack(double w,int c,int V)
{
for (int i=V; i>=c; --i)
dp[i]=min(dp[i],dp[i-c]*w);
}
int main(void)
{
int n,m,i,j;
while (~scanf("%d%d",&n,&m)&&(n||m))
{
fill(dp,dp+N,1.0);
for (i=0; i<m; ++i)
{
scanf("%d%lf",&c[i],&w[i]);
w[i]=1.0-w[i];
}
for (i=0; i<m; ++i)
zonepack(w[i],c[i],n);
printf("%.1lf%%\n",(1-dp[n])*100);
}
return 0;
}
SCU 2941 I NEED A OFFER!(01背包变形)的更多相关文章
- hdu 1203 I NEED A OFFER (0-1背包)
题意分析:0-1背包变形 递推公式:dp[i] = max(dp[i], 1-(1-dp[i-C])*(1-p)) /* I NEED A OFFER! Time Limit: 2000/1000 ...
- FZU 2214 Knapsack problem 01背包变形
题目链接:Knapsack problem 大意:给出T组测试数据,每组给出n个物品和最大容量w.然后依次给出n个物品的价值和体积. 问,最多能盛的物品价值和是多少? 思路:01背包变形,因为w太大, ...
- codeforce Gym 101102A Coins (01背包变形)
01背包变形,注意dp过程的时候就需要取膜,否则会出错. 代码如下: #include<iostream> #include<cstdio> #include<cstri ...
- HDU 2639 Bone Collector II(01背包变形【第K大最优解】)
Bone Collector II Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 【01背包变形】Robberies HDU 2955
http://acm.hdu.edu.cn/showproblem.php?pid=2955 [题意] 有一个强盗要去几个银行偷盗,他既想多抢点钱,又想尽量不被抓到.已知各个银行 的金钱数和被抓的概率 ...
- CF#214 C. Dima and Salad 01背包变形
C. Dima and Salad 题意 有n种水果,第i个水果有一个美味度ai和能量值bi,现在要选择部分水果做沙拉,假如此时选择了m个水果,要保证\(\frac{\sum_{i=1}^ma_i}{ ...
- HDOJ 1203 I NEED A OFFER!(01背包)
10397507 2014-03-25 23:30:21 Accepted 1203 0MS 480K 428 B C++ 泽泽 题目链接:http://acm.hdu.edu.cn/showprob ...
- hdu1203I NEED A OFFER!(01背包)
I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- HDU 1203 I NEED A OFFER! 01背包
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1203 解题思路:简单的01背包,用dp[i]表示花费不超过i时的最大可能性 状态转移方程 dp[i]= ...
随机推荐
- project.json
概述 项目相关配置,由原来的cocos2d.js中转移到project.json中,该文件需要与index.html同级,一般建议放在根目录下. 字段说明 debugMode 相当于原来的COCOS2 ...
- Eclipse调试:F5、F6、F7、F8
F5:跳入方法 F6:向下逐行调试 F7:跳出方法 F8:直接跳转到下一个断点 转载自:http://blog.sina.com.cn/s/blog_6271df6f0101d856.html
- 解决 g++ error:/usr/lib/rpm/redhat/redhat-hardened-cc1 No that file and directory
You need to install redhat-rpm-config which is required by some of the qt switches, probably: sudo d ...
- Tickeys -- 找对打字的感觉 (机械键盘音效软件)
最近发现公司里面越来越多人开始用机械键盘了,问了很多人为什么用机械键盘,主要有两种,一种是真的情怀,他们怀念十年前那种台式机硬邦邦的键盘,另外一种是因为喜欢机械键盘的声音,打字很爽.前者那真是没救了, ...
- linux常见问题集锦
本文转自 http://bbs.chinaunix.net/thread-3668921-1-1.html,在此感谢作者分享 一.填空题: 1. 在Linux系统中,以 文件 方式访问设备 . 2. ...
- GDB调试笔记
参考资料:GDB调试精粹及使用实例 # 调试实例 #include <iostream> #include <cstring> using namespace std; ][] ...
- 利用windbg探索进程和进程上下文
1.列出所有活动进程 使用!process命令可以打印出活动进程的信息.第一个参数是要打印的EPROCESS的地址,如果指定为0则表示打印所有的进程.第二个参数用于说明打印进程信息的详细级别.指定0则 ...
- scp 使用
[spark-hadoop@master ~]$ sudo scp /etc/profile spark-hadoop@slave1:/etc spark-hadoop@slave1's passwo ...
- vim跳到文件头和文末结尾
gg : 跳转到文件头 Shift+g : 跳转到文件末尾
- python开发_mysqldb安装
在python的API上面,看到了MySQLdb,即python可以操作mysql数据库 接下来,我就把我这两天的工作给大伙絮叨絮叨: 准备条件: 1.MySQL-python-1.2.4b4.win ...