标签:logs can 01背包 百分数 不同 需要 条件 思路 rip
题目:
1 #include<stdio.h> 2 struct S 3 { 4 int c; 5 double p; 6 }; 7 int main() 8 { 9 int n,m,i,j; 10 struct S s[10010]; 11 double f[10010]; 12 while(scanf("%d%d",&n,&m), n!=0||m!=0)//判断条件 13 { 14 for(i=0;i<m;i++) 15 scanf("%d%lf",&s[i].c,&s[i].p); 16 for(i=0;i<=n;i++) 17 f[i]=1; 18 for(i=0;i<m;i++){ 19 for(j=n;j>=s[i].c;j--){ 20 if(f[j] > f[j-s[i].c]*(1-s[i].p)) 21 f[j]=f[j-s[i].c]*(1-s[i].p); 22 } 23 } 24 printf("%.1lf%%\n",(1-f[n])*100); 25 } 26 return 0; 27 }
易错分析:
1、判断条件需要理解一下
2、求概率问题正向求解一般较为繁琐,适当的时候可以尝试逆向求解
标签:logs can 01背包 百分数 不同 需要 条件 思路 rip
原文地址:http://www.cnblogs.com/wenzhixin/p/7266246.html