hdu 2955 Robberies
来源:互联网 发布:怎样提高淘宝信誉度 编辑:程序博客网 时间:2024/06/06 20:18
刚开始一直以为概率最低为0.01,就乘以一百变成整数,化为纯的01背包问题求解。结果果不其然wa了。
想了一会儿,可以将金钱看成重量,将所有金钱加起来几位最大重量。可以定义dp[i]为:装满容量为i的背包的最小概率。
就有状态转移方程:dp[i]=max(dp[i],dp[i-bag[i].v]*bag[i].p。
这里我将概率转成了不被抓的概率。
#include<iostream>#include<cstdio>using namespace std;const int N=105;const int maxv=10005;double dp[maxv];struct node{ int v; double p;}bag[N];double m;int n;double max(double a,double b){ if(a>b) return a; return b;}int main(){ //freopen("in.txt","r",stdin); int t; cin>>t; while(t--) { fill(dp,dp+maxv,0); cin>>m>>n; int sum=0; for(int i=0;i<n;i++) { cin>>bag[i].v>>bag[i].p; bag[i].p=1-bag[i].p; sum+=bag[i].v; } dp[0]=1; for(int i=0;i<n;i++) { for(int j=sum;j>=bag[i].v;j--) dp[j]=max(dp[j],dp[j-bag[i].v]*bag[i].p); } for(int i=sum;i>=0;i--) if(dp[i]>1-m) { cout<<i<<endl; break; } } return 0;}
0 0
- hdu 2955 Robberies
- HDU 2955 - Robberies
- hdu 2955 Robberies DP
- Hdu 2955 - Robberies
- hdu 2955 Robberies
- hdu 2955 Robberies
- hdu 2955 Robberies
- hdu 2955 Robberies
- HDU 2955 Robberies
- hdu 2955 Robberies
- hdu 2955(Robberies)
- hdu 2955 Robberies
- HDU 2955 Robberies
- hdu 2955 Robberies
- hdu 2955 Robberies
- hdu-2955-Robberies
- hdu 2955 Robberies
- HDU:2955 Robberies
- JavaSE IO流 File文件操作基础知识
- HTTPS概述
- LintCode(158)
- 判断处理器是Big_endian的还是Little——endian的
- android ndk Using Prebuilt Libraries
- hdu 2955 Robberies
- 使用APKTOOL 反编译APK 失败的解决方法
- Hibernate插入、查询、删除操作 HQL
- Hash算法冲突解决方法分析
- 【扣丁学堂】看完惊呆!支付宝是如何用大数据憋死伪基站骗子?
- GIT和SVN之间的五个基本区别
- 一致性 hash 算法( consistent hashing )
- WIN8.1安装USB to UART经验
- 使用IKAnalyzer分词计算文章关键字