博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu-2955(01背包)Robberies
阅读量:4286 次
发布时间:2019-05-27

本文共 900 字,大约阅读时间需要 3 分钟。

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2955

题意:小偷想偷银行的钱给出小偷被抓的概率和n个银行,接下来给你n行数据 每行给出分别是银行的钱数和小偷被抓的概率

求在不大于小偷被抓的概率下能得到银行的钱数是多少;

状态转移:

把钱数当成体积               不被抓概率当成价值

状态方程:dp[j] = max(dp[j],dp[j-v[i]] *w[i];

#include 
#include
#include
using namespace std;double dp[10005];int n;double p;double w[105];int v[105];void DP(int V){ memset(dp,0,sizeof(dp)); dp[0] = 1.0; for(int i = 0;i < n;i++) { for(int j = V;j >= v[i];j--) { dp[j] = max(dp[j],dp[j-v[i]]*(1-w[i])); } } for(int i = V;;i--) { if(dp[i] > 1 - p) { printf("%d\n",i); break; } }}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%lf%d",&p,&n); int sum = 0; for(int i = 0;i < n;i++) { scanf("%d%lf",&v[i],&w[i]); sum += v[i]; } DP(sum); }}

转载地址:http://cysgi.baihongyu.com/

你可能感兴趣的文章
STL各种排序
查看>>
#include<map>
查看>>
z字形扫描
查看>>
相邻数对
查看>>
C++ string 字符串匹配
查看>>
C语言字符串函数大全
查看>>
轮盘赌选择,原理及C++实现
查看>>
C/C++中各种类型int、long、double、char表示范围(最大最小值)
查看>>
《Python爬虫学习系列教程》学习笔记
查看>>
MIC编程(4)——MIC灵活高效的编程方式
查看>>
Apriori算法
查看>>
Python itertools模块详解
查看>>
Apriori算法简介及实现(python)
查看>>
Python中的集合:set与frozenset用法举例
查看>>
python strip()函数 介绍
查看>>
pandas库中数据结构DataFrame的绘制函数
查看>>
Latex使用小结
查看>>
使用networkx-python绘制点边图
查看>>
NetworkX Tutorial Release 1.10
查看>>
networkx使用笔记(二)之小试牛刀篇
查看>>