当前位置: 首页 > news >正文

hdu_2955

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

经典DP练习题,自己的水平有限,参考了网上其他的答案。

01背包问题,如何选择背包容量和物品的价值在这里是比较困难的地方,把银行的钱当做背包,把概率当做价值,总容量为所有银行的总钱数,求不超过被抓概率的情况下,最大的背包容量是多少。这样的决策在AC过程中起到了比较大的作用。

这里有一个误区,被抓的概率不是简单的相加,而是符合概率论的相乘,p = (1-p1)(1-p2)(1-p3) 其中p为最大不被抓概率,p1,p2,p3为各个银行被抓概率。因为在测试样例中看不到这样的关系,所以这是需要警惕的点。

代码如下:

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 using namespace std;
 5 struct bag
 6 {
 7     int v;
 8     double p;
 9 }Bag[10010];
10 double dp[10010];
11 
12 int main()
13 {
14     int T,N;
15     double p;
16     scanf("%d",&T);
17     while(T--)
18     {
19         scanf("%lf %d",&p,&N);
20         int sum = 0;
21         for(int i = 0; i < N; i++)
22         {
23             scanf("%d%lf",&Bag[i].v,&Bag[i].p);
24             sum += Bag[i].v;
25         }
26         memset(dp,0,sizeof(dp));
27         dp[0] = 1;
28         for(int i = 0; i < N; i++)   
29         {
30             for(int j = sum; j >= Bag[i].v; j--)
31             {
32                 dp[j] = max(dp[j],dp[j-Bag[i].v]*(1-Bag[i].p));
33             }
34         }
35 
36         for(int i = sum; i >= 0; i--)
37         {
38             if(dp[i] > 1-p)
39             {
40                 printf("%d\n",i);
41                 break;
42             }
43         }
44     }
45     return 0;
46 }

 

转载于:https://www.cnblogs.com/huhusw/p/9591535.html

相关文章:

  • Linux常用命令 — 用户管理useradd、passwd、who、w
  • Python(可变/不可变类型,list,tuple,dict,set)
  • 元素尺寸和位置,scroll事件,事件响应链,事件默认行为
  • 修改input type=file 默认样式
  • 3分钟读懂C语言函数:这些例子一看就懂!|一键删除账户教学
  • ubuntu壁纸1080p
  • [转]bootstrap table本地数据使用方法
  • vue系列自定义指令(三)
  • 源码安装Nginx以及用systemctl管理
  • 以实例说明微服务拆分(以SpringCloud+Gradle)
  • ELK
  • python 小数据池,is and ==,decode ,encode
  • 牛客网NOIP赛前集训营-普及组(第一场)
  • Centos 7 超简单yum源安装MongoDB
  • 这可能是把ZooKeeper概念讲的最清楚的一篇文章
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • Flannel解读
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • Javascript基础之Array数组API
  • js数组之filter
  • mongo索引构建
  • spring security oauth2 password授权模式
  • Spring核心 Bean的高级装配
  • tweak 支持第三方库
  • vue-loader 源码解析系列之 selector
  • Yii源码解读-服务定位器(Service Locator)
  • 服务器从安装到部署全过程(二)
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 基于遗传算法的优化问题求解
  • 记一次用 NodeJs 实现模拟登录的思路
  • 解析带emoji和链接的聊天系统消息
  • 如何利用MongoDB打造TOP榜小程序
  • 设计模式(12)迭代器模式(讲解+应用)
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 数组大概知多少
  • 带你开发类似Pokemon Go的AR游戏
  • ​ubuntu下安装kvm虚拟机
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #pragma data_seg 共享数据区(转)
  • $().each和$.each的区别
  • (3)(3.5) 遥测无线电区域条例
  • (libusb) usb口自动刷新
  • (算法)Travel Information Center
  • (学习日记)2024.01.09
  • (一)Linux+Windows下安装ffmpeg
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)EOS中账户、钱包和密钥的关系
  • (转)http协议
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .net操作Excel出错解决
  • .Net小白的大学四年,内含面经
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • @EventListener注解使用说明