题目描述
一个劫匪要去抢劫n家银行,每家银行有一定的现金,每抢一家银行该劫匪有一定几率被警察抓住,但是当该劫匪被抓住的几率小于p时他可以逃脱,问该劫匪在不被捕的情况下最多能抢到多少钱?
输入格式
第一行为用例组数T,每组用例第一行为一个浮点数P和一个整数n分别表示被捕的几率上限以及该劫匪计划抢劫的银行数量,之后n行每个一个整数M和一个浮点数p表示该家银行的现金数以及该劫匪抢劫该家银行被捕的几率
0<T≤100 0.0≤P≤1.0 0<n≤100 0<Mj≤100 0.0≤pj≤1.0
输出格式
对于每组用例,输出该劫匪在不被捕的情况最多能抢到多少钱
样例输入
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
样例输出
2
4
6
时空限制
1s,512M
我的代码
#include<bits/stdc++.h>
using namespace std;
int t,n,m,dp[105];
double P,p;
int main(){
cin>>t;
for(int k=1;k<=t;k++){
memset(dp,0,sizeof(dp));
cin>>P>>n;
for(int i=1;i<=n;i++){
cin>>m>>p;
for(int j=P*10000;j>=p*10000;j--)
{
dp[j]=max(dp[j],dp[j-int(p*10000)]+m);
}
}
cout<<dp[int(P*10000)]<<endl;
}
return 0;
}
请各位大佬看看有什么问题