标签:
Description
Input
Output
Sample Input
3 0.04 3 1 0.02 2 0.03 3 0.05 0.06 3 2 0.03 2 0.03 3 0.05 0.10 3 1 0.03 2 0.02 3 0.05
Sample Output
2 4 6
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
#include <iomanip>
#include <math.h>
#include <map>
using namespace std;
#define FIN freopen("input.txt","r",stdin);
#define FOUT freopen("output.txt","w",stdout);
#define INF 0x3f3f3f3f
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
typedef long long LL;
const int MAXN=10005;
double dp[MAXN];
int M[105];
double P[105];
int main()
{
//FIN
int T;
scanf("%d",&T);
while(T--)
{
int N,total=0;
double AP;
scanf("%lf%d",&AP,&N);
for(int i=0;i<N;i++){
scanf("%d%lf",&M[i],&P[i]);
total+=M[i];//先求出所有能拿的钱有多少
}
memset(dp,0,sizeof(dp));
dp[0]=1;
for(int i=0;i<N;i++)
for(int j=total;j>=M[i];j--)
{
dp[j]=max(dp[j],dp[j-M[i]]*(1-P[i]));//求不被捉的概率
}
int ans;
for(int i=total;i>=0;i--){
if(dp[i]>=1-AP) {ans=i;break;}//从能拿最多钱的开始循环 如果能够不被捉的话就输出
}
printf("%d\n",ans);
}
}
标签:
原文地址:http://www.cnblogs.com/Hyouka/p/5732426.html