站外题求助:抢劫银行
  • 板块学术版
  • 楼主Chalage_2010
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/3/12 20:40
  • 上次更新2023/10/23 21:43:19
查看原帖
站外题求助:抢劫银行
760690
Chalage_2010楼主2023/3/12 20:40
题目描述
一个劫匪要去抢劫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;
}

请各位大佬看看有什么问题

2023/3/12 20:40
加载中...