#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<stack>
#include<queue>
#include<cctype>
using namespace std;
double a[10005];
struct node
{
int m;
double pp;
} aa[10005];
int main()
{
int t;
scanf("%d",&t);
while (t--)
{
memset(a, 0, sizeof(a));
a[0] = 1;
double p;
int sum = 0;
int n;
scanf("%lf%d",&p,&n);
for (int i = 1; i <= n; i++)
{
scanf("%d%lf",&aa[i].m,&aa[i].pp);
sum += aa[i].m;
aa[i] .pp= 1 - aa[i].pp;//能逃脱的概率
}
for (int i = 1; i <= n; i++)
for (int j = sum; j >= aa[i].m; j--)
{
//a[j] = max(a[j], a[j - m[i]] * aa[i]);
if (a[j] <= a[j - aa[i].m] * aa[i].pp)
a[j] = a[j - aa[i].m] * aa[i].pp;
}
for (int i = sum; i >= 0; i--)
{
if (a[i] >= 1 - p)
{
printf("%d\n",i);
break;
}
}
}
return 0;
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交