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

动态规划DP经典例题

一、定义动态规划Dynamic Programming简称 DP一种将答案过程性存储的优化算法。核心就是“空间换时间”通常可以理解为将算过一遍的答案存起来下次计算时直接调用省再次计算的时间。二、最长上升子序列【经典】原题链接​​​​​​https://www.luogu.com.cn/problem/solution/B3637样例2 -4 3 -1 2 -4 3若直接从1-n枚举分别以一号位、二号位..n号位为子序列开头向后枚举找出其中长度max再求和即可。时间复杂度O)几乎不能用。枚举中发现许多数据是重复使用的。例如五号位上的2在枚举二号位时出现了-4-123这种情况枚举四号位时出现了-123这种情况。这时2的最长子序列23重复出现。为了节约时间我们可以在之前算过之后将2的最长子序列用数组存储下来。这样再次枚举到五号位的2时可以直接调用其最长子序列长度省下了计算时间。我们发现一号位最长子序列需要用二、三、四、五、六、七号位的子序列求二号位需要三、四、五、六、七号位子序列三号位要用四、五、六、七号位子序列...以此类推六号位要用七号位子序列七号用自己。可以看出我们只需要从后往前求即先把七号位置子序列求出来再倒推回前面就可以。也就是从后往前求解。#includebits/stdc.h using namespace std; int n,a[5005],dp[5005],ans;//dp存储该点最长上升子序列长度 int main(){ scanf(%d,n); for(int i1;in;i) scanf(%d,a[i]); for(int in;i1;i--){//倒着循环 int cnt0;//用于识别是否存在子序列 //查找i的子序列 for(int ji1;jn;j){//枚举要调用的子序列位置 if(a[i]a[j] dp[i]dp[j]1){//满足上升和最长两个条件 dp[i]dp[j]1;//若满足加上这个点 cnt1; } } if(cnt0)dp[i]1;//不存在子序列 ansmax(ans,dp[i]); } printf(%d,ans); return 0; }三、区间DP1https://www.luogu.com.cn/problem/P1775例题石子合并弱化版依旧从小枚举从小到大枚举合并长度。例如先是两两合并代价接着扩大合并长度枚举三个石堆合并的最小代价四个合并最小代价...n个石堆合并最小代价。在枚举大的石堆代价的时候调用小石堆的代价。因此dp存储i到j的代价即可。详情看注释。#includebits/stdc.h using namespace std; int n,m[305]; int sum[305],dp[305][305];//dp[i][j]i到j合并代价 int main(){ scanf(%d,n); memset(dp,0x3f,sizeof(dp));//因为要取min所以初始化最大值 for(int i1;in;i){ scanf(%d,m[i]); sum[i]sum[i-1]m[i];//前缀和用于求区间和 dp[i][i]0;//自己合并自己代价为0 } for(int l2;ln;l){//合并长度 for(int i1;in-l1;i){ int jil-1;//合并由i到j的石堆 for(int k1;kj;k){ dp[i][j]min(dp[i][j],dp[i][k]dp[k1][j]sum[j]-sum[i-1]); //枚举 i到j的所有合并情况 // sum[j]-sum[i-1]为i到j合并总代价 } } } printf(%d,dp[1][n]); return 0; }四、区间DP2https://www.luogu.com.cn/problem/P1220例题点路灯根据题目不难发现每次人走过时都会顺路关掉一段区间内所有的灯。因此判断是区间DP。我们将所有灯编号走过的区间为l到rl到r之间所有的灯都被关掉了。每一次关灯视为一次行动人一定不是在左边就是在右边。因此每次行动时更新耗电量即可。dp[l][r][k]代表l到r区间的灯被关掉了k0或1代表人处于左端点l或右端点r。每次行动四种情况人现在在左端点要向左走人现在在右端点要向左走人现在在左端点要向右走人现在在右端点要向右走。一次更新即可代码#includebits/stdc.h using namespace std; int n,c,sum[55]; int w[55],dp[55][55][2],x[55];//w为耗电速度x为距离 int calc(int l,int r,int x){ return x*(sum[n]-(sum[r]-sum[l-1]));//计算每次行动消耗的电量 //为每分钟总耗电量-已经关掉的灯耗电量 *时间 } int main(){ scanf(%d%d,n,c); for(int i1;in;i){ scanf(%d%d,x[i],w[i]); sum[i]sum[i-1]w[i];//前缀和求区间和 } memset(dp,0x3f,sizeof(dp));//取min所以初始化最大值 dp[c][c][0]dp[c][c][1]0;//起始点初始化 for(int i1;in;i){//区间长编号 for(int j1;ji-1n;j){//起点编号 int lj,rji-1;//左右端点 for(int k0;k1;k){//枚举四种情况 int vk?r:l;//k0时r,否则l dp[l-1][r][0]min(dp[l-1][r][0],dp[l][r][k]calc(l,r,x[v]-x[l-1])); dp[l][r1][1]min(dp[l][r1][1],dp[l][r][k]calc(l,r,x[r1]-x[v])); } } } printf(%d,min(dp[1][n][0],dp[1][n][1])); return 0; }未完待续

相关文章:

动态规划DP经典例题

一、定义 动态规划(Dynamic Programming,简称 DP),一种将答案过程性存储的优化算法。核心就是“空间换时间”,通常可以理解为将算过一遍的答案存起来,下次计算时直接调用,省再次计算的时间。 二…...

交错并联BUCK变换器仿真之旅

交错并联BUCK变换器仿真 输入电压范围:36~70V;输出电压:28.5V;电压电流双闭环PI控制 可 单片机芯片型号:dsPIC33FJ32MC204 仿真平台:proteus8.9;编译软件:MPLAB X IDE在电源管理领域…...

【3GPP LTE】【Release 16】基于R16的eMTC GWUS(Group Wake-Up Signal)简要方案解析

摘要 LTE Cat-M(eMTC)作为物联网主流技术之一,其终端功耗是核心性能指标。3GPP在Rel-15/16中引入了唤醒信号(WUS)及其增强方案——组唤醒信号(GWUS),以进一步降低UE在空闲态下的功耗。本文将从背景原理、协议定义、实现方案到参数配置,系统阐述GWUS的简要技术方案,并…...

高频注入Simulink模型在50r/min工况下的电角度观测对比

此为高频注入simulink模型用于电角度观测。 模型为在d轴注入正弦波电压信号,经过低通,带通滤波器之后得到角度信息。 图一为高频注入观测电角度与实际电角度的对比在50r/min时的工况,图像表明观测电角度与实际电角度几乎重合。高频注入这玩意…...

MySql自用

一、语法 1.左连接 left join ...on... left左边的表的行全保留 2.子嵌套需要给别名 3.基础函数框架 Create Function 函数名(N INT) Returns Int 函数返回值类型 BeginReturn(--函数体); End N INT:入参,参数名为 N,类型为整数 INT&a…...

50个 filter相关的公共函数

这里给你50 个纯 JS、Vue3 通用、可直接复制使用的 filter 过滤工具函数,覆盖业务 99% 场景,包含:基础过滤、搜索、数组、对象、时间、真假值、去重、区间、正则、树形、空值、多条件等。 全部即拿即用,不依赖任何库!5…...

ABAQUS有限元分析软件在隧道开挖模型中的应用:从CD法到CRD法、台阶法、双侧壁导坑法、环...

abaqus隧道CD法开挖,CD法开挖模型,step by step,过程演示;abaqus隧道CRD法开挖模型,abaqus隧道台阶法开挖,abaqus隧道双侧壁导坑法开挖,abaqus隧道环形开挖预留核心土法开挖,模型&am…...

Spring全局异常处理拦截器JWT令牌使用

一、全局异常处理使用步骤step1:创建异常处理器类注意:要确保能扫描到异常处理器类| RestControllerAdvice用于标识当前类为REST风格对应的异常处理器 ExceptionHandler(Exception.class)标识处理哪些异常RestControllerAdvice public class ProjectExce…...

手把手教你学Simulink——基于Simulink的滞环电压控制(Bang-Bang)Buck仿真

目录 手把手教你学Simulink ——基于Simulink的滞环电压控制(Bang-Bang)Buck仿真 一、问题背景 二、Buck 电路与滞环控制原理 1. Buck 主电路 2. 滞环控制逻辑 三、Simulink 建模步骤 第一步:搭建 Buck 主电路(使用 Simscape Electrical) 第二步:实现滞环控制器 …...

聊聊 GitHub CLI,以及我为什么不再手动配 SSH 了

传统认证方式到底哪里难受? 说实话,在接触 gh 之前,我一直觉得 GitHub 的认证这块挺烦的。不是说它不能用,而是用起来总有点别扭。 先说用 HTTPS 加令牌这条路。GitHub 要求你去网页端生成一串很长的字符串,复制下来&a…...

RHEL9.7虚拟机部署及后续优化

一、搭建环境前的准备工作首先在搭建环境前将安装包提前解压到电脑D:\RHCSA文件夹(一定不要下载到C盘!!!)二、创建新的虚拟机二、RHEL后续优化从阅读模式进入编辑者模式从编辑模式退回阅读模式按ESC键并按住shift:输入…...

前沿科技一——5G/6G

一、概念 1、5G:万物互联的基石 (1)定义与特点: 5G,即第五代移动通信技术,具有高速率、低时延和大连接的特点。它实现了多种新型无线接入的状态,是真正意义上的通信技术与互联网的融合。 &a…...

手把手教你学Simulink——基于Simulink的主从式多机器人协同搬运控制仿真

目录 手把手教你学Simulink ——基于Simulink的主从式多机器人协同搬运控制仿真 一、问题背景 二、系统建模基础 1. 协同搬运系统结构 2. 运动学约束 3. 动力学耦合 三、主从式控制架构设计 1. 主机器人控制律(阻抗控制) 2. 从机器人控制律(导纳控制) 四、Simuli…...

南北阁Nanbeige 4.1-3B行业方案:数据库课程设计智能辅导系统

南北阁Nanbeige 4.1-3B行业方案:数据库课程设计智能辅导系统 1. 引言:当课程设计遇上AI,会发生什么? 如果你是计算机专业的学生,大概率逃不过“数据库课程设计”这门课。我还记得当年自己做的那个“学生信息管理系统…...

乐高兼容ESP32对讲机:模块化嵌入式音频通信设计

1. 项目概述乐高兼容积木对讲机是一个面向教育与趣味交互场景的嵌入式音频通信系统,其核心设计目标是将专业级无线语音通信能力封装为可拼搭、可扩展、可定制的模块化硬件平台。该项目并非传统意义上的消费级对讲设备,而是一种融合了硬件工程实践、音频信…...

霜儿-汉服-造相Z-Turbo开发环境配置:从零开始搭建Python与PyTorch环境

霜儿-汉服-造相Z-Turbo开发环境配置:从零开始搭建Python与PyTorch环境 想自己动手研究“霜儿-汉服-造相Z-Turbo”这类AI模型的源码,或者想基于它做些二次开发,第一步也是最关键的一步,就是搭建一个稳定、兼容的开发环境。很多朋友…...

springboot基于网络爬虫的热门图书推荐系统

🍅 作者主页:Selina .a 🍅 简介:Java领域优质创作者🏆、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作。 主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据…...

springboot基于人脸识别的互联网课堂考勤系统

🍅 作者主页:Selina .a 🍅 简介:Java领域优质创作者🏆、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作。 主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据…...

Qwen2.5-VL-7B-Instruct新手入门:从安装到第一个图文对话

Qwen2.5-VL-7B-Instruct新手入门:从安装到第一个图文对话 1. 环境准备与快速部署 1.1 硬件要求 Qwen2.5-VL-7B-Instruct是专为RTX 4090显卡优化的多模态大模型,需要满足以下硬件条件: 显卡:NVIDIA RTX 4090(24GB显…...

AudioSeal Pixel Studio代码实例:Python调用PyTorch实现水印生成与识别

AudioSeal Pixel Studio代码实例:Python调用PyTorch实现水印生成与识别 1. 音频水印技术概述 音频数字水印技术是一种将特定信息嵌入到音频信号中的技术,这些信息对人类听觉系统几乎不可感知,但可以通过专用算法检测提取。AudioSeal是Meta(…...

MT5 Zero-Shot参数组合实验报告:Temperature×Top-P对中文长句改写成功率影响

MT5 Zero-Shot参数组合实验报告:TemperatureTop-P对中文长句改写成功率影响 1. 引言 你有没有遇到过这种情况:手里有一批中文文本数据,想用来训练一个模型,但数据量太少,模型总是学不好?或者,…...

Pi0 Web界面效果实测:并发用户数压力测试(1/5/10用户响应性能曲线)

Pi0 Web界面效果实测:并发用户数压力测试(1/5/10用户响应性能曲线) 1. 引言:为什么需要关注Web界面的并发性能? 如果你正在评估或使用Pi0机器人控制模型的Web演示界面,一个很实际的问题可能会浮现在脑海&…...

Qwen2.5-72B部署教程:基于vLLM的GPU算力优化与显存压缩技巧

Qwen2.5-72B部署教程:基于vLLM的GPU算力优化与显存压缩技巧 1. 模型简介 Qwen2.5-72B-Instruct-GPTQ-Int4是通义千问大模型系列的最新版本,作为72B参数规模的指令调优模型,它在多个方面实现了显著提升: 知识量与能力增强&#…...

YOLO11新手实战:跟着步骤完成第一个目标检测项目

YOLO11新手实战:跟着步骤完成第一个目标检测项目 1. 项目介绍与环境准备 1.1 YOLO11简介 YOLO11是当前最先进的目标检测算法之一,以其快速、准确的特点在计算机视觉领域广受欢迎。这个镜像提供了完整的YOLO11运行环境,包含所有必要的依赖项…...

Wan2.1-umt5在创意写作中的突破:生成连贯长篇故事与复杂人物对话

Wan2.1-umt5在创意写作中的突破:生成连贯长篇故事与复杂人物对话 你有没有想过,让AI帮你写一个完整的故事?不是那种几百字的片段,而是有开头、有发展、有高潮、有结局,人物还会自己对话的长篇故事。听起来像是科幻小说…...

Qwen3.5-35B-A3B-AWQ-4bit多模态应用:建筑设计图规范审查、施工进度图比对、BIM模型截图理解

Qwen3.5-35B-A3B-AWQ-4bit多模态应用:建筑设计图规范审查、施工进度图比对、BIM模型截图理解 1. 多模态模型在建筑行业的创新应用 建筑行业正经历数字化转型的关键时期,传统的人工图纸审查和施工管理方式面临效率瓶颈。Qwen3.5-35B-A3B-AWQ-4bit作为先…...

Qwen3.5-27B部署实录:4090D四卡环境从裸机到7860端口可用全程记录

Qwen3.5-27B部署实录:4090D四卡环境从裸机到7860端口可用全程记录 1. 环境准备与硬件配置 1.1 硬件要求 在开始部署Qwen3.5-27B模型前,我们需要确保硬件环境满足最低要求: GPU配置:4张NVIDIA RTX 4090 D显卡(每张2…...

Stable-Diffusion-V1-5 超分辨率输出测试:探索模型生成4K及以上分辨率图像的极限

Stable-Diffusion-V1-5 超分辨率输出测试:探索模型生成4K及以上分辨率图像的极限 最近在玩Stable Diffusion的时候,我脑子里总冒出一个念头:这模型生成512x512或者768x768的图是挺溜的,但要是我想整一张能当壁纸的4K大图&#xf…...

比迪丽LoRA模型C语言基础拓展:轻量级SDK封装与调用演示

比迪丽LoRA模型C语言基础拓展:轻量级SDK封装与调用演示 1. 引言 如果你是一位嵌入式或者系统级的开发者,平时打交道最多的可能就是C语言,对Python那一套生态可能感觉有点距离。现在有个AI模型,比如一个能生成特定风格图片的比迪…...

串口调试助手(CM野人版)4.0内存数据滞留Bug分析与临时解决方案

1. 串口调试助手(CM野人版)4.0内存数据滞留Bug详解 最近在嵌入式开发圈里,不少同行都在讨论CM野人版串口调试助手4.0的一个奇怪现象。我自己在做STM32项目时也遇到了同样的问题:明明已经修改了程序代码,重新烧录后串口输出的却还是旧数据。刚…...