#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; struct Node { int m; double p; }; Node bank[200]; double dp[100000]; int main() { int t,n; double p; int i,j,k; scanf("%d",&t); while(t--) { memset(dp,0,sizeof(dp)); dp[0]=1.0; scanf("%lf%d",&p,&n); for(i=0;i<n;i++) { scanf("%d%lf",&bank[i].m,&bank[i].p); } for(i=0;i<n;i++) { for(j=10000;j>=bank[i].m;j--) { dp[j]=max(dp[j],dp[j-bank[i].m]*(1-bank[i].p)); } } int ans=0; for(i=11000;i>=0;i--) { if(dp[i]>1-p) {ans=i; break;} } printf("%d\n",ans); } return 0; }
时间: 2024-10-07 11:15:28