HDU 2955 Robberies(DP)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=2955
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include <iostream> #include <algorithm> #include <cstring> using namespace std; int v[100+5]; double dp[105*105]; double p[100+5]; int main(){ int T, m, sum; double pe; cin>>T; while(T--){ sum = 0; cin>>pe>>m; for(int i = 0;i < m; i++){ cin>>v[i]>>p[i]; sum += v[i]; } for(int i=1;i<= sum;i++) dp[i] = 0; dp[0] = 1; for(int i = 0;i < m; i++){ for(int j=sum;j >= v[i]; j--){ dp[j] = max(dp[j], dp[j-v[i]]*(1-p[i])); } } for(int j = sum;j >= 0; j--){ if(dp[j] > (1-pe)){ cout<<j<<endl; break; } } } return 0; }