01背包
#include<stdio.h>
typedef struct
{
int m;
double p;
}A;
A a[102];
double max1(double x,double y)
{
return x>y?x:y;
}
int main ()
{
int t,n,i,k,s;
double p,x[10200];
scanf("%d",&t);
while(t--)
{
scanf("%lf%d",&p,&n);
p=1-p;
for(i=s=0;i<n;i++)
{
scanf("%d%lf",&a[i].m,&a[i].p);
s+=a[i].m;
a[i].p=1-a[i].p;
}
for(i=0;i<=s;i++)
x[i]=0;
x[0]=1;
for(i=0;i<n;i++)
for(k=s;k>=a[i].m;k--)
{
x[k]=max1(x[k],x[k-a[i].m]*a[i].p);
}
for(i=s;i>0;i--)
if(x[i]>p)
break;
printf("%d\n",i);
}
return 0;
}