暑假集训第四周阶段一 DP A - Robberies
来源:互联网 发布:程序员试用期总结 编辑:程序博客网 时间:2024/06/11 17:53
A - Robberies
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uDescription
The aspiring Roy the Robber has seen a lot of American movies, and knows that the bad guys usually gets caught in the end, often because they become too greedy. He has decided to work in the lucrative business of bank robbery only for a short while, before retiring to a comfortable job at a university.
For a few months now, Roy has been assessing the security of various banks and the amount of cash they hold. He wants to make a calculated risk, and grab as much money as possible.
His mother, Ola, has decided upon a tolerable probability of getting caught. She feels that he is safe enough if the banks he robs together give a probability less than this.
For a few months now, Roy has been assessing the security of various banks and the amount of cash they hold. He wants to make a calculated risk, and grab as much money as possible.
His mother, Ola, has decided upon a tolerable probability of getting caught. She feels that he is safe enough if the banks he robs together give a probability less than this.
Input
The first line of input gives T, the number of cases. For each scenario, the first line of input gives a floating point number P, the probability Roy needs to be below, and an integer N, the number of banks he has plans for. Then follow N lines, where line j gives an integer Mj and a floating point number Pj .
Bank j contains Mj millions, and the probability of getting caught from robbing it is Pj .
Bank j contains Mj millions, and the probability of getting caught from robbing it is Pj .
Output
For each test case, output a line with the maximum number of millions he can expect to get while the probability of getting caught is less than the limit set.
Notes and Constraints
0 < T <= 100
0.0 <= P <= 1.0
0 < N <= 100
0 < Mj <= 100
0.0 <= Pj <= 1.0
A bank goes bankrupt if it is robbed, and you may assume that all probabilities are independent as the police have very low funds.
Notes and Constraints
0 < T <= 100
0.0 <= P <= 1.0
0 < N <= 100
0 < Mj <= 100
0.0 <= Pj <= 1.0
A bank goes bankrupt if it is robbed, and you may assume that all probabilities are independent as the police have very low funds.
Sample Input
30.04 31 0.022 0.033 0.050.06 32 0.032 0.033 0.050.10 31 0.032 0.023 0.05
Sample Output
246
分析:
01背包的变形,唯一不同的是这个还会多一步的处理步骤,找到最优解
12345678910111213141516171819202122232425262728293031323334353637
#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;struct bone{ int a; double b;} v[101];int main(){ int s,t,n,i,j; double m,f[11000]; while(scanf("%d",&t)!=EOF) while(t--) { s=0; scanf("%lf %d",&m,&n); memset(f,0,sizeof(f)); f[0]=1; for(i=0; i<n; i++) { scanf("%d %lf",&v[i].a,&v[i].b); s+=v[i].a; } for(i=0; i<n; i++) for(j=s; j>=v[i].a; j--) if(f[j]<f[j-v[i].a]*(1-v[i].b)) f[j]=f[j-v[i].a]*(1-v[i].b); for(i=s;i>=0;i--) if(f[i]>=1-m) { printf("%d\n",i); break; } } return 0;}
0 0
- 暑假集训第四周阶段一 DP A - Robberies
- 暑假集训第四周阶段二DP A - 最长公共子序列
- 暑假集训第四周 阶段一 DP 动态规划 B - Bone Collector
- 暑假集训第四周 DP C - Proud Merchants
- 暑假集训第四周 周三赛A - 命运 动态规划
- 暑假集训第四周阶段二E - Max Sum最大连续子数组和
- 暑假集训第四周第一练
- 暑假集训第四周 DP D - Big Event in HDU 分院
- 暑假集训第一天
- 暑假集训第一天
- 暑假集训大一第一周阶段二题目K - 征服的国家
- 暑假集训第四周 周六赛 动态规划 E相同的塔
- 暑假集训第一周总结
- 暑假集训 第五天了
- 2017暑假集训第一天
- 2017暑假集训第三天
- 暑假集训#1 A题
- 高一暑假集训总结
- HDU 5298 Solid Geometry Homework(异或)
- iOS中使用七牛云存储Django服务端实现简单的图片上传功能
- java.sql.SQLException: Parameter metadata not available for the given statement
- C语言-变量的存储类别(auto, static, register, extern)
- Store Kit Guide(In App Purchase)翻译
- 暑假集训第四周阶段一 DP A - Robberies
- opencv——PNG格式图像读取转换函数
- C++第七节:继承
- 斐波那契数列四吧
- Codeforces 520D. Cubes 状态模拟+贪心
- vidibility属性visible,invisible与gone的区别
- hdoj 1969 pie【二分法】
- Linux系统拨号上网
- java基础-集合