1 条题解
-
0
C++ :
#include<stdio.h> #include<string.h> #define N 105 double w[N]; int v[N]; double dp[10005];//抢i元不被抓的最大概率 double Max(double a,double b) { if(a>b) return a; else return b; } int main() { int i,j; //freopen("test.txt","r",stdin); //freopen("test.out","w",stdout); int T; while(scanf("%d",&T)!=EOF) { for(i=0;i<10005;i++) { dp[i]=0; } while(T--) { double vt; int n; int i,j; scanf("%lf%d",&vt,&n); int sum=0; for(i=0;i<n;i++) { scanf("%d%lf",&v[i],&w[i]); sum+=v[i]; w[i]=1-w[i]; } for(i=0;i<=sum;i++) dp[i]=0; dp[0]=1; //偷0元钱不被抓的概率肯定为1了,,, for(i=0;i<n;i++) { for(j=sum;j>=v[i];j--) dp[j]=Max(dp[j],dp[j-v[i]]*w[i]); } vt=1-vt; //不被抓的最小概率 for(i=sum;i>=0;i--) { if(dp[i]>vt) { printf("%d\n",i); break; } } } } return 0; }
- 1
信息
- ID
- 868
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者