HDU 1203 I NEED A OFFER! ,01背包改编。
2012-08-17 20:05
387 查看
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1203
==========================
最主要的地方在于动态方程是:
dp[i]=max(dp[i],1-(1-dp[i-money])*(1-rp));
概率的算法是,例如:1-(1-0.2)*(1-0.3);
AC代码如下:
==========================
最主要的地方在于动态方程是:
dp[i]=max(dp[i],1-(1-dp[i-money])*(1-rp));
概率的算法是,例如:1-(1-0.2)*(1-0.3);
AC代码如下:
#include<iostream> #include<stdio.h> using namespace std; int money[10050]; double rp[10050],dp[10050]; int allmoney,allnum; double max(double a,double b) { if(a>b) return a; else return b; } void ZeroOnePack(int money,double rp) { int i; for(i=allmoney;i>=money;i--) { dp[i]=max(dp[i],1-(1-dp[i-money])*(1-rp)); } } int main() { while(scanf("%d %d",&allmoney,&allnum)) { if(allmoney==0&&allnum==0) break; memset(dp,0,sizeof(dp)); int i; for(i=0;i<allnum;i++) scanf("%d %lf",&money[i],&rp[i]); for(i=0;i<allnum;i++) ZeroOnePack(money[i],rp[i]); dp[allmoney]*=100; printf("%.1lf%%\n",dp[allmoney]); } return 0; }
相关文章推荐
- [HDU 1203 I NEED A OFFER!] 01背包
- HDU1203--I NEED A OFFER!--01背包
- HDU 1203 I NEED A OFFER!(01背包基础题)
- HDU 1203 I NEED A OFFER!(01背包概率问题)
- 【HDU 1203】 I NEED A OFFER!(01背包)
- HDU 1203 I NEED A OFFER!(01 背包DP)
- hdu 1203 I NEED A OFFER! 不错的01背包求最小值
- hdu 1203 I NEED A OFFER!--01背包
- HDU - 1203 I NEED A OFFER! (01背包变形)
- HDU 1203 I NEED A OFFER!(01背包)
- I NEED A OFFER! hdu 1203 01 背包
- HDU1203 I NEED A OFFER! (0-1背包)
- 杭电 1203 I NEED A OFFER!(01背包)
- HDU 1203 I NEED A OFFER! (背包的多项式操作)
- HDU 1203 I NEED A OFFER!(基础背包)
- HDU 1203 I NEED A OFFER! (01DP)
- hdu 1203 I NEED A OFFER!(0/1背包)
- HDU 1203 I NEED A OFFER! 0-1背包
- 动态规划 ③ HDU - 1203 I NEED A OFFER! 背包问题+独立事件概率
- HDU-1203 I NEED A OFFER!(0、1背包)