1023 Problem W
2016-05-19 22:14
267 查看
1023 Problem W
题意:Speakless很早就想出国,要申请国外的任何大学,你都要交纳一定的申请费用,Speakless没有多少钱,总共只攒了n万美元。他将在m个学校中选择若干的(当然要在他的经济承受范围内)。每个学校都有不同的申请费用a(万美元),并且Speakless估计了他得到这个学校offer的可能性b。不同学校之间是否得到offer不会互相影响。计算一下,他可以收到至少一份offer的最大概率。
思路:已知总钱数,以及申请费和录取概率,求至少得到一份录取通知书的最大概率,此题为0-1背包的另一种形式。可得等式dp[j]=min{dp[j],dp[j-a[i]]*b[i]}。
感想:因为要求至少获得一份通知书的概率,所以可以将问题转换为对其对立情况的求解,这样问题会简化许多。
#include<iostream>
#include<stdio.h>
using namespace std;
double dp[10003];
int n,m,i,j,a[10003];
double b[10003];
int main(){
while(cin>>n>>m){
if(n==0&&m==0)
break;
for(i=0;i<m;i++){
cin>>a[i]>>b[i];
b[i]=1-b[i];
}
for(i=0;i<=n;i++) dp[i]=1.0;
for(i=0;i<m;i++)
for(j=n;j>=a[i];j--){
if(dp[j]>dp[j-a[i]]*b[i])
dp[j]=dp[j-a[i]]*b[i];
}
printf("%.1lf%%\n",(1-dp
)*100);
}
return 0;
}
题意:Speakless很早就想出国,要申请国外的任何大学,你都要交纳一定的申请费用,Speakless没有多少钱,总共只攒了n万美元。他将在m个学校中选择若干的(当然要在他的经济承受范围内)。每个学校都有不同的申请费用a(万美元),并且Speakless估计了他得到这个学校offer的可能性b。不同学校之间是否得到offer不会互相影响。计算一下,他可以收到至少一份offer的最大概率。
思路:已知总钱数,以及申请费和录取概率,求至少得到一份录取通知书的最大概率,此题为0-1背包的另一种形式。可得等式dp[j]=min{dp[j],dp[j-a[i]]*b[i]}。
感想:因为要求至少获得一份通知书的概率,所以可以将问题转换为对其对立情况的求解,这样问题会简化许多。
#include<iostream>
#include<stdio.h>
using namespace std;
double dp[10003];
int n,m,i,j,a[10003];
double b[10003];
int main(){
while(cin>>n>>m){
if(n==0&&m==0)
break;
for(i=0;i<m;i++){
cin>>a[i]>>b[i];
b[i]=1-b[i];
}
for(i=0;i<=n;i++) dp[i]=1.0;
for(i=0;i<m;i++)
for(j=n;j>=a[i];j--){
if(dp[j]>dp[j-a[i]]*b[i])
dp[j]=dp[j-a[i]]*b[i];
}
printf("%.1lf%%\n",(1-dp
)*100);
}
return 0;
}
相关文章推荐
- 12.13周记
- Maven仓库详解
- 4——PHP比较&&复制运算符
- MongoDB升级到3.0以上的Zabbix监控模板变更
- 离散数学 求偏序集极大极小元第三种思路 假链式前向星
- HDU2124 Repair the Wall(贪心)
- UEFI引导系统
- 多方向拖拽改变元素大小
- U3D学习笔记1
- poj2186 Popular Cows(Tarjan+缩点水)
- Mac上安装MySQL图文教程(解决了临时密码和编码集问题)
- 课堂练习四
- 1,理解java中的IO
- 1、基础题
- 团队作业6——设计文档
- 大数据学习路径
- 利用MATLAB的GUI设计的一款可以进行FOCT电流比差计算的仿真平台
- C++内存模型
- leetcode 038 Count and Say
- CSS选择器