记忆化

news/2025/10/9 20:01:40/文章来源:https://www.cnblogs.com/Liuxb-oier/p/19131868

记忆化

记忆化搜索(减少重复计算,对搜索的优化)

DFS指数级
记忆化保证了每个值只计算一次限制在了NM时间范围内=等价于DP动态规划

好处:不需要考虑循环顺序,且只考虑有解的状态,相较递推效率可能更高
弊端:需要考虑边界,存储all状态,以及不好用滚动数组

记忆化理解:

点击查看代码
记忆化避免重复计算,对于计算过的结果开辟记忆数组存储
本质:若当前x,y相同那么得到结果依然不变,所以对于得到的结果进行记录避免重复计算记忆数组含义:等价于dfs的含义
如采药:记忆数组即=dfs=采前i株草花费time时间得到的最大收益

记忆化需初始化(memset)

memset原理是将指定内存中值全部设置为指定值,初始指定值只能是0,-1,其余极大值0x7f,极小值0x80,

01搜索:同30分

点击查看代码
void dfs(int now, int times, int worths) {if(now > n) {if(times <= m) ans = max(ans, worths);return ;}dfs(now + 1, times, worths);dfs(now + 1, times + t[now], worths + w[now]);return ;
}
点击查看代码
int dfs(int now, int times) {int ans;if(now == 0) {return 0;}ans = dfs(now - 1, times);if(times >= t[now]) {ans = max(ans, dfs(now - 1, times - t[now]) + w[now]);}return ans;
}int main() {cout << dfs(n, m);
}

01记忆化

点击查看代码
int dfs(int now, int times) {int ans;if(now == 0) {return 0;}
//判断是否已记忆化    if(f[now][times] != -1) return f[now][times];ans = dfs(now - 1, times);if(times >= t[now]) {ans = max(ans, dfs(now - 1, times - t[now]) + w[now]);}
//记忆化 f[now][times] = ans;return ans;//也可f[now][times] = ans;写为一步
}
int main() {memset(f, -1, sizeof f);cout << dfs(n, m);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/933821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重组抗体技术:从原理到应用,解锁高效可控的新一代抗体研发

在抗体技术迭代中,重组抗体凭借 “基因工程改造 + 可控化生产” 的核心优势,逐渐取代传统杂交瘤抗体,成为科研、诊断与治疗领域的主流工具。它不仅解决了动物源抗体的免疫排斥问题,还能灵活设计为全长抗体、小分子…

关于jinja2的ssti模版注入的学习+过滤

查找想要的模块 cnt = 0 for item in [].__class__.__base__.__subclasses__():try:if os in item.__init__.__globals__:print(cnt, item)cnt += 1except:cnt += 1continue{% for i in range(300) %}{{ i }} - {{ .__…

WPF Epplus export 10M+ items in excel with multiple sheets batch by batch

Install-Package Epplus; private async Task ExportAsExcelCommandExecuted(object? obj) {try{await PopulateStatusMsg($"Start exporting");exportedIdx = 0;var dg = obj as DataGrid;var items = dg.…

[EGOI 2023] Guessing Game

精彩。 这篇题解有思路讲解,只想看做法的可以看其它题解。 做题第一步一定是先把题目要干什么弄清楚。不妨令这题第一个人是 A(除了最后一个访问的元素的信息填写者),第二个人是 B(接收信息者),第三个人是 C(最…

CF2152G Query Jungle

很精巧的题。 很明显求的是虚树的叶子结点数量。 然而这个玩意还带修,看起来有点恶心。不过带修的问题一般都不会很复杂,再加上子树修改我们考虑用搜索序把树拍到序列上,为了更好的刻画叶子,我们可以考虑使用性质更…

[ROI 2018] Addition without carry

还是记录一下,有点怪但是有点帅。 首先条件等价于和不进位,也就是说每一位只有一个 \(b\) 是 \(1\)。 对于 \(b_i\ge a_i\) 的限制我们可以当成 \(a_i\) 加若干非负数,考虑 check 一个答案是否合法,记得确定一个漂…

[THUPC 2025 决赛] Im Here

题目给了一刻编号为搜索序的树,我们形式化限制,考察方案序列:若 \(u\) 是 \(v\) 的祖先,则 \(u\) 在 \(v\) 后面。 第 \(i\) 个点只能出现在 \([1,n-i+1]\) 这些位置中。显然限制一是一个树上拓扑序计数的东西,我…

下好多雨

下好多雨继续hbase 和其他作业

解码Linux基础命令

Linux 基础命令 核心概念:终端、Shell 与内核的关系 Linux 中用户通过终端(Terminal)与系统交互,终端是运行Shell(命令解释器)的窗口,而 Shell 是连接用户与内核(Kernel)的桥梁:内核:系统核心,管理 CPU、内…

戴尔电脑开机出现supportassist怎么办_戴尔电脑开机出现supportassist多种解决优秀的方法

戴尔电脑开机出现supportassist怎么办_戴尔电脑开机出现supportassist多种解决优秀的方法2025-10-09 19:36 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important…

基于 C++ 的高雷诺数湍流直接数值模拟求解器设计与性能优化 - 实践

基于 C++ 的高雷诺数湍流直接数值模拟求解器设计与性能优化 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

项目经理常见面试题7:作为项目经理,你如何协调项目中不同角色(构建、测试、产品)的矛盾?

项目经理常见面试题7:作为项目经理,你如何协调项目中不同角色(构建、测试、产品)的矛盾?pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !impo…

由等概率(a,b)生成等概率(c,d)

问题描述:有一个函数,可以等概率的生成x∈(a,b),如何编写函数生成x∈(c,d) 举例f函数可以生成[1,5],生成[1,7]1 public static int f() { 2 return (int) (Math.random() * 5) + 1; 3 } 解题思路:通过f()改造成等…

是时候使用NanoID取代UUID了

是时候使用NanoID取代UUID了是时候使用NanoID取代UUID了付国强兴趣是一个人成功的基石​关注他5 人赞同了该文章 UUID是软件开发中最常用的通用标识符之一。然而,在过去的几年里,其他替代品挑战了它的存在。其中,N…

经营分析会 - 智慧园区

很多公司的经营分析会,最终都变成了“数据的狂欢,行动的荒漠”。报表一页页翻,指标一个个念,大家口干舌燥,却还是不知道问题到底出在哪、该怎么办。问题的根源其实很简单: 财务指标只能告诉你“发生了什么”,却…

详细介绍:C#练习题——泛型实现单例模式和增删改查

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Ivanti EPM移动版12.5.0.0身份验证绕过漏洞分析与利用

本文详细分析了Ivanti Endpoint Manager Mobile 12.5.0.0版本中的身份验证绕过漏洞(CVE-2025-4428)和表达式语言注入漏洞(CVE-2025-4427),提供了完整的Python利用代码,可实现未授权远程命令执行。Ivanti Endpoint Ma…

自动评估问答模型的技术突破

本文介绍了一种名为AVA的自动问答模型评估方法,采用创新的peer attention机制,在NAACL会议上展示。该方法相比人工评估错误率仅为7%,包含线性模型和基于Transformer的神经网络模型,使用包含200万训练样本的数据集。…

task8.c

task8.cinclude<stdio.h> include<math.h> int main() { double s, a, b, c, area; while (scanf_s("%lf%lf%lf", &a, &b, &c) != EOF) { s = (a + b + c) / 2; area = sqrt(s * (s…

运行Udacity的MPC控制项目指南(project_10)在Ubuntu 18.04环境下

系统更新与工具安装更新系统包列表:打开终端并运行以下命令以确保所有软件包都是最新的。 sudo apt update sudo apt upgrade安装构建工具:安装编译器和构建依赖项。 sudo apt install build-essential cmake git li…