HDU 2955 Robberies

手把手教你用smarteye搭建免费GB28181监控平台(含海康设备接入避坑指南) 本文提供了一份基于SmartEye搭建免费GB28181视频监控平台的实战指南。详细介绍了从服务器部署、GB28181协议核心配置,到海康威视等主流设备接入的完整流程,并重点分享了设备注册失败、无法预览等常见问题的深度排错方法,旨在帮助中小企业及开发者低成本实现多品牌监控设备的统一管理。 阅读详情

传送门

01背包,,,非常灵活的变形。
给你很多个银行(物品),每个银行的钱数(重量)和被抓概率(价值),一个人去抢劫这些银行,但是总体被抓概率要小于一个固定值P,在这基础上最多能抢多少钱。(一个银行要么不被抢,要么全被抢)

乍一看肯定是钱数当成价值啊,因为正好要求最大化钱数,所以被抓概率就是重量了?。。不行的。概率值是个小数,而dp[]的下标就是当前背包容量,这概率连乘起来位数多了去了,数组下标没法搞。

所以只能概率当成价值,钱数当成重量(N*Mj<=10000)。然后再看这题,它给的是被抓概率,然而总体被抓概率不是被抓概率的连乘,所以我们翻一下,把每个银行的不被抓概率当成价值。
这就变成了:(在可供抢劫范围为前i个银行的情况下,)抢劫不超过当前钱数下,最大的不被抓概率是多少。

但是,细心的话你会发现一个问题。 不抢一家银行的不被抓概率最大,那么所有钱数下的最大不被抓概率都是1。怎么办?其实考虑dp的初始值也能发现,按理说,本来dp的初值应该都是1.0,但那样的话就永远不会再被更新了。

所以要加个限制,必须恰好装满。 所以只有dp[0]的初值是1.0,其他都是不合法的值(因为是乘积传递,用0.0就可以了)。
现在问题变成了:(在可供抢劫范围为前i个银行的情况下,)恰好抢劫当前钱数下,最大的不被抓概率是多少。

接下来运行dp,最后,我们从大到小枚举钱数,当概率第一次大于P时,此时的钱数就是答案了。为什么能这么求?因为我们算的都是最大不被抓概率,如果最大概率都无法大于一个下限,那么意味着这个钱数下肯定无解;如果之后钱数下的概率比答案更大,那么也没有用,因为只要概率大于下限了,我们并不关心哪个更大,我们只关注哪个抢的钱多。


#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
#include <string>
#include <queue>
using namespace std;

int N, T;
double P;
double dp[10001];            // 恰好!!抢劫这些钱的最大逃脱概率,背包容量是当前抢劫钱数
double p[101];
int w[101];
int sum;                     // 背包容量

void init()
{
	fill(dp + 1, dp + 10001, 0.0);        // 恰好装满系列。价值是乘积,需要额外注意初始化!
	dp[0] = 1.0;
	sum = 0;
}

int main()
{
	
	scanf("%d", &T);
	for (; T--;)
	{
		scanf("%lf%d", &P, &N);
		P = 1.0 - P;
		init();
		for (int i = 1; i <= N; i++)
		{
			scanf("%d%lf", &w[i], &p[i]);
			p[i] = 1.0 - p[i];                // 所谓逃脱概率 = (1-p[1])*(1-p[2])*(1-p[3])...   p[i]表示该次被抓概率
			sum += w[i];
		}

		for (int i = 1; i <= N; i++)
		{
			for (int j = sum; j >= w[i]; j--)
			{
				dp[j] = max(dp[j], dp[j - w[i]] * p[i]);
				//cout << "   i= " << i << " j= " << j << "   " << dp[j] << endl;   弄不清的时候,不妨看看运行过程
			}
		}
		for (int i = sum; i >= 0; i--)
		{
			if (dp[i] > P)
			{
				printf("%d\n", i);
				break;
			}
		}
	}

	return 0;
}
基于python+mediapipe的手势拖动识别(无gpu) 手势点方块拖动 阅读详情

相关推荐

complier lab2

只需支持定义 main 函数即可不带参数 int main(){...}带参数 int main(int argc, int argv){...}

qq_43581843的博客 905

【hdu2955】 Robberies 01背包

标签:01背包 hdu2955http://acm.hdu.edu.cn/showproblem.php?pid=2955 题意:盗贼抢银行,给出n个银行,每个银行有一定的资金和抢劫后被抓的概率,在给定一个概率P,表示盗贼愿意冒险抢劫所能承受的最大被抓概率。 思路:首先用1减去被抓概率,得到安全概率。那抢劫了多家银行后的安全概率就是这些银行各自的安全概率连乘起来。其实是01背包的变种...

weixin_30364325的博客 106

安卓游戏存档修改全攻略:以《英雄迷宫冒险》为例(附避坑指南)

本文详细介绍了安卓游戏存档修改的全过程,以《英雄迷宫冒险》为例,涵盖基础认知、工具选择、实战修改及风险控制。通过十六进制编辑和UTF-8编码解析,玩家可以修改金钱、角色属性和物品数量等数据,同时提供了避坑指南和伦理考量,帮助玩家在享受修改乐趣的同时保持游戏体验的平衡。

weixin_29209801的博客 392

HDU2955 Robberies 一道01背包问题

HDU 2955 这一题,很有趣味。 首先,如果是按照照常的思路,在内层for循环,没办法遍历背包容量(概率),概率是double/float型的数据。 所以,将价值看成背包容量,在寻找可行的最大的价值时,将价值从大到小遍历,出现满足的概率条件时,便可以结束,此时的背包容量(价值),就是最终结果。 另外,注意,这么多银行中只要有一个银行抓住了他,就没有逃脱成功。 //HDU 2955...

117瓶果粒橙 283

【python】geopandas库安装出现各种问题?可以看看这篇文章

geopandas的安装方法

jgsecurity的博客 3886

大模型-高通平台性能测试示例-2

在QNN中,可以使用(genis-t2t-run)和这两个工具来进行推理的性能分析。支持在QNX操作系统或Android操作系统上进行性能分析。:提供基本的性能数据,如运行时间、资源消耗等。:提供更详细的性能数据,可能包括各个操作的执行时间、资源使用情况等。:是指在性能分析的同时进行代码质量检查,以发现潜在的问题。:是指跟踪和分析神经网络中各个操作的性能,以优化网络结构或参数。

点滴的岁月 1491

hdu2955 解决问题的思路不错 逆向求解

//题意:Roy想偷银行里的钱,但是在偷每个银行里的钱时,都冒着一定被抓的风险,为了能让被抓的风险降低为(小于等于p) //求所偷的最大的值。 //思路:刚开始以为将被抓的概率X100000,然后把p当做背包的容量,利用01背包求解,但是最后还是错了,因此小数点后面的位数太多了。 //看了下别人的思路,感觉挺好。转化为最大的存活概率。 //即:将银行所有的资产转化为背包的容量,求存活率最高,注意当

wahaha1_的专栏 725

高等数学/概率论/数理统计/线性代数/离散数学面试-核心概念-问题理解

特征值与特征向量是线性代数中的概念,它们与线性变换有关。在线性变换中,如果存在非零向量 v ,使得当该向量通过变换后,其方向不变,只是长度发生了变化,那么这个向量 v 就是特征向量。而这个长度变化的比例因子,即变换前后向量长度的比值,称为特征值。数学公式表示:通俗易懂的解释:想象一下,你有一个可以伸缩的橡皮筋,这个橡皮筋可以代表一个向量。现在,你有一个特殊的机器,它可以改变橡皮筋的形状,但不会改变它延伸的方向。当你把橡皮筋放入机器中,机器会拉伸或压缩橡皮筋,但橡皮筋的方向保持不变。

m0_64198455的博客 2292

HDU - 2955 - Robberies

背包动态规划

~ 229

6.4 实战项目:基于Agent内核构建Code Review智能体

本文介绍了一个基于Agent内核构建的智能Code Review系统实战项目。系统采用多Agent协作架构,包含代码质量分析、安全漏洞识别、性能优化建议等核心功能模块。文章详细展示了系统架构设计,采用协调器Agent管理多个专业Agent协同工作,并提供了基础Agent框架和协调器Agent的TypeScript实现代码。项目结合了AI Agent核心原理和多Agent协作机制,实现了自动化的代码审查流程,能够生成详细的审查报告,帮助开发者提升代码质量和安全性。

yonggeit的博客 3109

[Python图像处理] 十.形态学之图像顶帽运算和黑帽运算

数学形态学(Mathematical morphology)是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的运算包括:腐蚀和膨胀、开运算和闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换等。本篇文章主要讲解Python调用OpenCV实现图像形态学转化,包括图像顶帽运算和图像黑帽运算,基础性知识希望对您有所帮助。

杨秀璋的专栏 1万+

HDU2955(Robberies)

题目传送门 题意 大概意思就是有一个人要去抢银行,然后算好了每个银行有多少钱,抢这个银行的风险是多少。给定银行数目和风险数,问不超过这个风险数下能抢到的最大金额。看起来好像挺简单的不就是01背包嘛,其实也道题也不简单,坑也不少。 思路 错误的思路:最开始我做这道题强行把风险数转为整数当做背包容量,然后再去做01背包,几发WA之后我不得不怀疑自己的思路的正确性。然后我开始怀疑这个浮点数是不是给的位...

weixin_43808717的博客 723

yolov26改进 | 检测头篇 | 利用渐近特征金字塔网络AFPN改进yolov26检测头融合P2网络结构(让小目标无所遁形,全网独家首发)

本文介绍一种基于AFPN渐近特征金字塔网络改进的YOLOv26四检测头Detect_FPN。AFPN通过逐级融合底层细节、中层结构与高层语义特征,缩小不同尺度特征之间的语义差距,减少直接融合带来的信息冲突,使检测头获得更稳定、更充分的多尺度表达。本文进一步增加高分辨率小目标检测分支,强化对微小目标、密集目标和复杂背景目标的感知能力,适合工业缺陷、遥感及无人机等场景。文中将展示基础模型与改进模型的训练对比结果,并提供完整代码、配置文件、模块注册方法及Codex修改思路,方便直接复现和二次创新。

Snu77的博客 369

hdu 2955 Robberies(01背包)

hdu 2955 Robberies (01背包)

程序员的冷浪漫 765

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

hdu 2955 Robberies

hdu  2955  Robberies                 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2955 题目大意:劫匪Roy the Robber打算大干一票然后安度晚年,估计了n个银行的储备金总数,及其被抓概率(抢一次必然就全抢走,然后就要承担在这个银行被抓的危险了)。其母有些担心,给规定了个最大被抓概率忍受上限,我们要

slicer的技术交流栈 761

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Robberies HDU - 2955

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...

Foolishman的博客 340

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

HDU 2955 Robberies(01背包)

题目链接:HDU 2955 Robberies 01背包。 题目中给的概率精度是两位的,但是不一定都是两位的,所以没法同乘一个常数使概率变成整数,然后以把概率当成背包。这道题应该把银行总钱量当成背包。 状态转移方程:f[j]=max(f[j],f[j-q[i].money]*q[i].v),f[j]表示抢j块大洋的最大的逃脱概率。 dp[0]赋值为1(没有抢银行肯定能跑),其余dp值赋为0

fobdddf的专栏 573

HDU——2955Robberies

Robberies Time Limit: 1000msMemory Limit: 32768KB This problem will be judged on HDU. Original ID: 2955 64-bit integer IO format: %I64d Java class name: Main Prev Submit Status Statist...

aiguo4793的博客 213

HDU2955 Robberies

RobberiesTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 29525    Accepted Submission(s): 10799Problem Description The aspiring Roy the Robber h...

zhlbjtu2016的博客 229

hdu 2955:Robberies(概率dp,也可以叫01背包变形)

hdu 2955:Robberies(概率dp,也可以叫01背包变形) Problem Description 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 ...

serendipity的博客 224

hdu2955 Robberies

hdu2955 Robberies

李典金 338

hdu 2955 Robberies 01背包 Java

hdu 2955 Robberies 这道题自己写得挺久,最坑的一点是自己一开始是用 StreamTokenizer 类读取的,但是一直错,后来用 Scanner 类读取就 accept 了,搞不懂。 解这道题有以下关键点: 第一:一开始想的是用概率来作为背包容量,但是概率是浮点数,所以只能用钱来作为背包容量。 第二:题目中给出的都是被抓的概率,概率之间应该是相乘而不是相加,与一般的01背包不一样。 第三:dp[0] 注意初始化为 1, 什么都不偷逃跑的概率为 1。 import java.io.IOExc

weixin_46621409的博客 163

物联网平台开发实战:从技术选型到架构演进

物联网作为连接物理世界与数字世界的核心技术,其架构通常分为感知层、网络层与平台层。平台层作为物联网的“大脑”,承担着设备接入、数据处理与业务逻辑实现的核心功能,其技术栈与后端开发高度重叠,但需特别关注物联网协议与海量设备接入场景。在工程实践中,消息队列(如Kafka)用于应对数据洪峰,时序数据库(如InfluxDB)则针对时间序列数据存储优化,而微服务架构与全链路监控是保障系统稳定性的关键。本文以物联网平台后端开发为例,通过一个完整的智能监控Demo项目,串联起从设备数据采集、MQTT传输、Spring B

weixin_34122810的博客 361

hdu 2955 Robberies 背包

题意:求在给定的被捉概率范围内列出每个银行的钱和被捉概率 求出最大抢到的钱数.超出给定的被捉率她妈妈就不会给他去冒险! Description The aspiring Roy the Robber has seen a lot of American movies, and knows that the bad guys usually gets caught i

u013087645的专栏 627

HDU2955-Robberies

http://acm.hdu.edu.cn/showproblem.php?pid=2955 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; double q[105],dp[10005]; int m[105]; int main(void...

weixin_30794491的博客 106

hdu2955Robberies

正文 首先题意是,告诉你一个劫匪,他要去抢劫银行,告诉你他能忍受的被抓的最大几率,并告诉你每个银行所拥有的钱数,以及他会被抓的概率,问,在不超过最大限度的情况下,能获得的最大收益。 解析: 看到这道题,首先反应,这道题是一个01背包的题目,但是,这道题他的RMB显然是他的价值,而被抓的概率显然是容积,但是,容积是一个小数该怎么办呢?要不然这就是一个NP完全问题了 但是,每一个银行的钱数是一个整数啊...

mzj_best的博客 300
上一篇: HDU 3832 Earth Hour
下一篇: HDU 1864 最大报销额
Crossing over
博客等级 码龄10年 6粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值