hdu 1203 I NEED A OFFER! 变形01背包
2016-10-21 22:55
405 查看
经典01背包的变形
事件1发生的概率为p1,事件2发生的概率为p2,..pn,那么n件中至少发生一件就是一件也不发生的逆事件 p = 1-[(1-p1)(1-p2)..(1-pn)]
事件1发生的概率为p1,事件2发生的概率为p2,..pn,那么n件中至少发生一件就是一件也不发生的逆事件 p = 1-[(1-p1)(1-p2)..(1-pn)]
#include<iostream> #include<string.h> #include<iomanip> using namespace std; const int N = 10001; double dp ; int n,v; int w ; double c ; void pack() { //memset(dp,0,sizeof(dp));//double类型只能用这个清零 fill(dp,dp+N,1); for(int i=0;i<n;i++) for(int j=v;j>=w[i];j--) { double v1 = dp[j]; //相当于背包拿最小值 double v2 = dp[j-w[i]]*(1-c[i]); if(v1>v2)dp[j]=v2; else dp[j] = v1; } cout<<setiosflags(ios::fixed)<<setprecision(1)<<(1-dp[v])*100<<"%"<<endl; } int main() { while(cin>>v>>n&&(v!=0||n!=0)) { for(int i=0;i<n;i++) { cin>>w[i]>>c[i]; } pack(); } }
相关文章推荐
- 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背包)
- 【动态规划-01背包】 HDU 1203 I NEED A OFFER!
- 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背包)
- HDU 1203 I NEED A OFFER!【01背包】
- 【DP|01背包】HDU-1203 I NEED A OFFER!
- hdu1203 I NEED A OFFER!(01背包)
- HDU 1203 I NEED A OFFER!(01背包)
- HDU 1203 I NEED A OFFER!(背包变形)
- hdu 1203 I NEED A OFFER!(简单01背包)
- HDU-1203-I NEED A OFFER!(Java+01背包)
- hdu 1203 I NEED A OFFER!(01背包)
- hdu 1203 I NEED A OFFER! 01背包
- HDU 1203 I NEED A OFFER![动态规划——01背包问题+简单概率]
- 1203 HDU I NEED A OFFER! [01背包]