动态规划:

news2024/9/29 13:18:19

这类问题非常简单,甚至看起来有点笨,说白了就是利用计算机的计算能力一步步算过去,也就是大多数人没有意识到的递推问题

比如求1~n的前缀和:

#include<iostream>
using namespace std;
long long sum[100];
int main(){
	
	int n;
	cin >> n;
	for(int i = 1;i <= n;i ++){
		sum[i] = sum[i - 1] + i;
	}
	cout << sum[n] << endl;
	return 0;
}

比如最经典的:[NOIP2002 普及组] 过河卒 - 洛谷​​​​​​https://www.luogu.com.cn/problem/P1002

这个问题就是递推,或者说是动态规划,从前 到后这样一直算过去,其实这种思想一点都不难,就完全是利用了计算机的计算能力,但是为什么很多人说不会,有两点原因,一个是没有理解递推这个思想,一个是这个装态如何由上一个状态得到,这个就是间的模型少,对于第一个问题,大家看明白上述两个例子,应该就能理解的差不多了,对于第二个问题,我带着大家一起来总结一下所有的动态规划问题模型:

1背包问题:n个物品,和一个容量为v的背包,每一个物品有两个属性:价值和体积

限制是总体积小于等于背包容量,要求是价值最大,注意是可以没有必要装满

01背包:顾名思义就是每件物品能用一次或者零次(最多能用1次)

首先这类问题一看就是如果只有一件商品或者两件 或者三个都很容易选择,大问题可以分解成比较小的问题,所以是递推递归类的问题,所以说可以向动态规划这方面考虑 

每个动态规划问题都是分为两个步骤,首先是状态表示,其次是状态计算

状态表示关键在于想清楚这个集合的含义的同时找到题目要求的条件和我们开始递推的条件,这两个条件是我们写代码(for循环)的关键

然后集合划分的关键在于找到能表示当前集合的子集,或者说找到这个状态的上一个状态,比如01背包问题,当前状态是选择零个还是一个产品,选不选a[i]这个产品

完全背包: 每件物品能用无限个 

当前状态是选不选a[i]这个产品,这个产品选择几个的问题

多重背包:每件物品有si个 朴素版本 + 优化版本

集合划分是这个产品选择几个,最多不能超过s[i]个,朴素版本和完全背包的代码基本上是一样的,多了一个限制

优化版本是用二进制来列举每一个范围内的整数

分组背包问题:有很多组,每一组只能选择一个,水果只能选择一个,蔬菜只能选择一个

集合划分是当前组别选不选,选的话选这个里面的第几个产品

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

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

相关文章

20kV高精度可调高压稳压测试电源的学习与使用

一&#xff1a;应用范围 A: 二极管反向耐压测试 B: 二极管反向漏电流测试 C: 高压电容耐压测试 D: 玻璃釉电阻非线性性能测试 E:氙灯击穿电压测试 F: 材料耐压测试 二、特点 高精度恒流恒压高压输出源 它拥有0~20kV的电压输出能力, 0.005%的电压分辨率精度, 0.1uA的电 …

Docker安装Prometheus和Grafana监控Redis

Docker安装Prometheus和Grafana监控Redis 使用 Docker 安装 Grafana 和 Prometheus 无疑是最简单的&#xff0c;我们接下来将采用此种方式。 1、安装Prometheus 查看Prometheus镜像 $ docker search prometheus拉取镜像 $ docker search bitnami/prometheus在/home/zhangs…

css 小程序 按钮控件点击区域放大 热点区域

背景&#xff1a; 小程序在手机上屏幕过小&#xff0c;但是又想放很多元素&#xff0c;这时候点击区域&#xff0c;命中元素概率很&#xff0c;希望能在不布局不变形情况下&#xff0c;把点击区域放大。 先看效果&#xff1a; 解决方法&#xff1a; 通过&#xff1a;transfo…

WebGL交错缓冲区【Interleaved Buffer】

推荐&#xff1a;用 NSDT设计器 快速搭建可编程3D场景。 昨天我在 WebGL 沙箱项目的评论中收到 Jon 的一个问题&#xff1a; 嗨, 布兰登&#xff0c;以你的演示为起点&#xff0c;我尝试显示一个金字塔&#xff0c;但到目前为止我只能看到它的四个面之一。 如果我使用 gl.LINES…

零信任:基于Apisix构建认证网关

背景 零信任一直是我们未来主攻的一个方向&#xff0c;全球加速&#xff0c;SD-WAN组网都是一些非常成熟的产品&#xff0c;全球加速是我们所有产品的底座&#xff0c;SD-WAN解决的是多个网络打通的问题&#xff0c;而零信任则主打应用访问。 关于零信任&#xff0c;我们已经…

使用Wireshark 找出 TCP 吞吐瓶颈

Debug 网络质量的时候&#xff0c;我们一般会关注两个因素&#xff1a;延迟和吞吐量&#xff08;带宽&#xff09;。延迟比较好验证&#xff0c;Ping 一下或者 mtr[1] 一下就能看出来。这篇文章分享一个 debug 吞吐量的办法。 看重吞吐量的场景一般是所谓的长肥管道(Long Fat …

包装类~~

就是8种基本数据类型对应的引用类型 2&#xff1a;为什么提供包装类 Java为了实现一切皆对象&#xff0c;对8种基本类型提供了对应的引用类型后面的集合和泛型其实也只能支持包装类型&#xff0c;不支持基本数据类型。 自动装箱&#xff1a;基本类型的数据和变量可以直接赋值…

ResNet:深度学习中的重要里程碑

目录 导言&#xff1a; 1. 应用 2. 结构介绍 3. 代码案例 导言&#xff1a; 深度学习的迅速发展在图像识别、语音处理和自然语言处理等领域取得了巨大的突破。然而&#xff0c;深度神经网络在训练过程中遇到了梯度消失和梯度爆炸等问题&#xff0c;限制了模型的性能和训练…

【springboot整合】RabbitMQ

Spring与消息 概述 消息中间件的主要作用&#xff1a;提高系统异步通信、扩展解耦能力消息服务的两个重要概念&#xff1a;消息代理&#xff08;message broker&#xff09;和目的地&#xff08;destination&#xff09;消息队列的两种形式的目的地&#xff1a;队列&#xff…

CentOS ping命令:name or service not known

1.虚拟机网络连接设置为“NAT模式”&#xff0c;且NAT设置 导航栏“编辑”->“虚拟网络编辑器” ->NAT模式->NAT设置 2.网络配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33注&#xff1a;IPADDR和NAT设置里面的IP最后一位要不同 3.DNS设置 vi /etc/reso…

自然语言处理: 第四章Seq2Seq

自然语言处理: 第四章Seq2Seq 理论基础 开始之前&#xff0c;首先提出一个问题&#xff0c;电脑是怎么识别人类的命令的&#xff0c;首先人们通过输入代码(编码) &#xff0c;带入输入给计算机然后再经过处理(解码)得到最终的命令。所以可以看到这其实是一个编码 解码的过程…

lesson10 Zigbee组播通信原理

目录 Zigbee组播通信原理 实验原理 实验过程 实验设计 发送模块 接收模块 实验现象 组播通信总结 Zigbee组播通信原理 实验原理 1、组播通信&#xff1a;在Zigbee无线网络里&#xff0c;模块可以进行分组来标记。发送的模块如果发送的组号和网络里标记模块的组号相对应…

被偷走的文件

也是一道流量解析题目 既然是文件被盗走&#xff0c;可能跟文件传输协议ftp有关&#xff0c;过滤一下ftp 跟踪流后发现有一个flag.rar文件&#xff0c;是内嵌的吗&#xff1f; 那说明应该也可以利用binwal分出来吧 分离出来的rar文件需要密码&#xff0c;拿去爆破一下&#xff…

03_ES6

ES6(在js中进行操作) 使用var声明变量的弊端 var 声明的变量有预解析&#xff0c;造成逻辑混乱&#xff0c;可以先使⽤&#xff0c;后声明,undefined var 可以重复定义同⼀个变量&#xff0c;第二个会修改变量的值 var ⽤在 for 循环条件中&#xff0c;造成 for 循环的污染的…

【八股】【C++】(三)STL

这里写目录标题 STL定义一、容器概念&#xff08;1&#xff09;vector如何避免扩容导致效率低为什么是1.5或2扩容怎么找某vector或者list的倒数第二个元素vector如何释放空间[] 下标检查 &#xff08;2&#xff09;deque&#xff08;3&#xff09;stack&#xff08;4&#xff0…

如何通过Python下载GSMap数据集(解决.dat无法打开的问题)?

目录 01 前言 02 GSMap-MVK的存储方式和数据集介绍 03 代码实现 01 前言 这么晚了我还是希望将这篇博客写一下&#xff0c;记录生活。 我所下载的数据集为GSMap-MVK数据集&#xff0c;延迟大概2.5月左右我记得.边下载我就想着先处理着吧。 例如&#xff0c;其中一个文件如…

HOT38-翻转二叉树

leetcode原题链接&#xff1a;翻转二叉树 题目描述 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#xff1a; 输入&#xff1a;…

华为OD机试真题B卷 Python 实现【小朋友排队】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入2、输出 一、题目描述 小明今年升学到了小学1年级&#xff0c;来到新班级后&#xff0c;发现其他小朋友身高参差不齐&#xff0c;然后就想基于每个小朋友和自己的身高差&#xff…

postgresql内核分析 spinlock与lwlock原理与实现机制

​专栏内容&#xff1a; postgresql内核源码分析 手写数据库toadb 并发编程 个人主页&#xff1a;我的主页 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物. 概述 在postgresql 中&#xff0c;有大量的并发同步&#xff0…