hdu2955robberies
来源:互联网 发布:ubuntu上配置samba 编辑:程序博客网 时间:2024/05/12 20:47
背包9讲中的01背包的一种变形
原型 dp[v]=max(dp[v],dp[v-c[i]]+w[i]);
对于本题进行分析 ;
背包容量 = 所有银行的钱数之和 sum+=c[i] i=0,1......n;
花费是被抓住的概率 价值是偷到的钱
因此不难推得 dp[v]=max(dp[v],dp[v-c[i]]*w[i]); 注意 dp为double型 精度不止两位
代码如下:
#include <iostream>#include <cstdio>#include <cstring>using namespace std;int main(){ int t; cin>>t; double dp[10000],p; double w[100]; int c[100],n; while(t--) { cin>>p>>n; int count=0; for(int i=0;i<n;i++) { cin>>c[i]>>w[i]; count+=c[i]; } memset(dp,0,sizeof(dp)); dp[0]=1.0; for(int i=0;i<n;i++) for(int v=count;v>=c[i];v--) dp[v]=max(dp[v],dp[v-c[i]]*(1-w[i])); for(int i=count;i>=0;i--) { if(dp[i]>=1-p) { cout<<i<<endl; break; } } } return 0;}
0 0
- hdu2955robberies
- hdu2955Robberies
- hdu2955Robberies
- hdu2955robberies一维数组
- hdu2955Robberies (01背包,反向思维)
- hdu2955Robberies 01背包水题
- HDU2955Robberies (0-1背包问题)
- UVA 839借助别人思路抄袭
- MySql的基本命令已经常用的SQL语句总结
- linux指令
- JQuery常用的方法
- 十六进制转八进制
- hdu2955robberies
- 使用gdb调试android原生程序
- unable to locate package的问题
- python ConfigParser 模块学习
- HDU 4622 Reincarnation
- HDU 4509 湫湫系列故事——减肥记II
- 数列特征
- nmap的参数详解
- SpringMVC 文件上传配置,多文件上传,使用的MultipartFile