标签:
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