P9242 [蓝桥杯 2023 省 B] 接龙数列--DP【巧妙解决接龙问题】

P9242 [蓝桥杯 2023 省 B] 接龙数列--DP

    • 题目
  • 解析
    • 什么时候该用 DP?
    • 动态规划 vs 其他方法
    • 代码

题目

在这里插入图片描述

解析

这题没思路,压根没想到DP 😦

看了大神的题解,利用dp记录每一个数结尾的长度,最后再用N-dp中的最大值,得到最少删除数

动态规划(DP)是一种解决复杂问题的算法思想,它的核心是 将大问题拆解为小问题,并记录中间结果避免重复计算。

什么时候该用 DP?

1.求最值问题
最长递增子序列、最短路径、最大利润、最少操作次数等。
例如本题的「最长接龙序列」,最终答案需要求最值。

2.问题可以被分解为重叠子问题
子问题之间有重复计算的部分。
例如斐波那契数列:fib(n) = fib(n-1) + fib(n-2),计算 fib(5) 需要重复计算 fib(3)。

3.子问题的最优解能推导出全局最优解(最优子结构
当前状态的值只依赖于前面已计算的状态。
例如本题中,以数字 y 结尾的最长接龙序列长度,只依赖于前面以 x 结尾的序列长度。

动态规划 vs 其他方法

贪心算法
贪心每一步选择当前最优,但不能保证全局最优(例如部分背包问题可用贪心,但 0-1背包不行)。
DP 能保证全局最优,但可能需要更高时间复杂度。

回溯/DFS
回溯会遍历所有可能路径,时间复杂度高;DP 通过记录中间结果避免重复计算。

代码

#include <iostream>
#include <vector>
#include <set>
#include <string>
#include <cstring>
#include <algorithm>
#include <math.h>
#include <queue>
#include <climits>  // 包含INT_MAX常量
#include <cctype>
#include <map>
using namespace std;
int n, dp[10];int main() {cin >> n;for (int i = 0; i < n; i++) {string s;//便于找到首尾数cin >> s;//如果当前字符串 s 的首位是 x,那么它只能接在某个以 x 结尾的序列后面,形成新的以 y 结尾的序列。//以数字 y 结尾的最长接龙序列长度,只依赖于前面以 x 结尾的序列长度。(x:S的首位,y:为S的末位)//之前以x结尾的长度     =max(之前以x结尾的长度    ,之前以y结尾的长度+1)dp[s.back() - '0'] = max(dp[s.back() - '0'], dp[s.front() - '0']  + 1);}int maxx = INT_MIN;for (int i = 0; i < 10; i++)maxx = max(maxx, dp[i]);cout << n - maxx;return 0;
}

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

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

相关文章

用《设计模式》的角度优化 “枚举”

枚举应该都有用过&#xff0c;枚举主要的作用是为了方便用户查找和引用枚举。 案例一 下面的枚举逻辑很简单&#xff0c;就是通过枚举值返回不同的结果。 public enum OperationEnum {EQUAL_TO,CONTAINS,START_WITH,END_WITH;public String getOperationValue(String value)…

SQL根据分隔符折分不同的内容放到临时表

SQL Server存储过程里根据分隔符折分不同的内容放到临时表里做查询条件&#xff0c;以下分隔符使用“/”&#xff0c;可修改不同分隔符 --根据分隔符折分不同的内容放到临时表--------------- SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS id, LTRIM(RTR…

Ubuntu切换lowlatency内核

文章目录 一. 前言二. 开发环境三. 具体操作 一. 前言 低延迟内核&#xff08;Lowlatency Kernel&#xff09; 旨在为需要低延迟响应的应用程序设计的内核版本。Linux-lowlatency特别适合音频处理、实时计算、游戏和其他需要及时响应的实时任务。其主要特点是优化了中断处理、调…

基于Django创建一个WEB后端框架(DjangoRestFramework+MySQL)流程

一、Django项目初始化 1.创建Django项目 Django-admin startproject 项目名 2.安装 djangorestframework pip install djangorestframework 解释: Django REST Framework (DRF) 是基于 Django 框架的一个强大的 Web API 框架&#xff0c;提供了多种工具和库来构建 RESTf…

VUE3开发-9、axios前后端跨域问题解决方案

VUE前端解决跨域问题 前端页面需要改写 如果无效&#xff0c;记得重启服务器 后端c#解决跨域问题 前端js取值&#xff0c;后端c#跨域_c# js跨域-CSDN博客

DailyNotes 增加提醒功能

TODO&#xff1a;准备给 DailyNotes 增加一个提醒功能&#xff0c;准备接入 AI 来做一些事情。试了一下&#xff0c;非常靠谱。 具体 DailyNotes 和 Ollama 的交互方式&#xff0c;可以直接调用命令行&#xff0c;也可以走网络API。 rayuK2CD9WCYN4 ~ % ollama run deepseek-…

PY32MD320单片机 QFN32封装,内置多功能三相 NN 型预驱。

PY32MD320单片机是普冉半导体的一款电机专用MCU&#xff0c;芯片采用了高性能的 32 位 ARM Cortex-M0 内核&#xff0c;主要用于电机控制。PY32MD320嵌入高达 64 KB Flash 和 8 KB SRAM 存储器&#xff0c;最高工作频率 48 MHz。PY32MD320单片机的工作温度范围为 -40 ~ 105 ℃&…

OpenManus介绍及本地部署体验

1.OpenManus介绍 OpenManus&#xff0c;由 MetaGPT 团队精心打造的开源项目&#xff0c;于2025年3月发布。它致力于模仿并改进 Manus 这一封闭式商业 AI Agent 的核心功能&#xff0c;为用户提供无需邀请码、可本地化部署的智能体解决方案。换句话说&#xff0c;OpenManus 就像…

【贪心算法】简介

1.贪心算法 贪心策略&#xff1a;解决问题的策略&#xff0c;局部最优----》全局最优 &#xff08;1&#xff09;把解决问题的过程分成若干步 &#xff08;2&#xff09;解决每一步的时候&#xff0c;都选择当前看起来的“最优”的算法 &#xff08;3&#xff09;“希望”得…

springboot知识点以及源码解析(2)

web开发--静态规则与定制化 springboot对静态资源的映射规则&#xff1a;在类路径下面定义目录static或public或resources或者META-INF/resources&#xff0c;访问时项目根目录静态资源的名称 在springboot中&#xff0c;如果项目中存在同名的静态资源和同名的动态资源。那么我…

C++:string容器(下篇)

1.string浅拷贝的问题 // 为了和标准库区分&#xff0c;此处使用String class String { public :/*String():_str(new char[1]){*_str \0;}*///String(const char* str "\0") // 错误示范//String(const char* str nullptr) // 错误示范String(const char* str …

使用 vxe-table 导出 excel,支持带数值、货币、图片等带格式导出

使用 vxe-table 导出 excel&#xff0c;支持带数值、货币、图片等带格式导出&#xff0c;通过官方自动的导出插件 plugin-export-xlsx 实现导出功能 查看官网&#xff1a;https://vxetable.cn gitbub&#xff1a;https://github.com/x-extends/vxe-table gitee&#xff1a;htt…

JavaScript数据类型和内存空间

一、JavaScript 数据类型 基本数据类型&#xff1a;字符串&#xff08;String&#xff09;、数字(Number)、布尔(Boolean)、空&#xff08;Null&#xff09;、未定义&#xff08;Undefined&#xff09;、Symbol 引用数据类型&#xff1a;对象(Object)、数组(Array)、函数(Fun…

DNS Beaconing

“DNS Beaconing” 是一种隐蔽的网络通信技术&#xff0c;通常与恶意软件&#xff08;如木马、僵尸网络&#xff09;相关。攻击者通过定期发送 DNS请求 到受控的域名服务器&#xff08;C&C服务器&#xff09;&#xff0c;实现与恶意软件的隐蔽通信、数据传输或指令下发。由…

python中采用opencv作常规的图片处理的方法~~~

在python中&#xff0c;我们经常会需要对图片做灰度/二值化/模糊等处理&#xff0c;这时候opencv就是我们的好帮手了&#xff0c;下面我来介绍一下相关用法: 首先&#xff0c;需要安装opencv-python库: 然后&#xff0c;在你的代码中引用: import cv2 最后就是代码了&#x…

CmBacktrace的学习跟移植思路

学习移植CmBacktrace需要从理解其核心功能、适用场景及移植步骤入手&#xff0c;结合理论学习和实践操作。以下是具体的学习思路与移植思路&#xff1a; 一、学习思路 理解CmBacktrace的核心功能 CmBacktrace是针对ARM Cortex-M系列MCU的错误追踪库&#xff0c;支持自动诊断Har…

支付宝当面付java,php,sdk下载

SDK & Demo 获取 - 支付宝文档中心 开放平台服务端 SDK 为了帮助开发者调用开放接口&#xff0c;支付宝提供了开放平台服务端 SDK&#xff0c;包含 Java、PHP、NodeJS、Python 和 .NET 等语言版本&#xff0c;DEMO 中封装了签名 & 验签、HTTP 接口请求等基础功能。 详…

Cocos Creator Shader入门实战(三):CCEffect参数配置讲解

引擎版本&#xff1a;3.8.5 您好&#xff0c;我是鹤九日&#xff01; 回顾 稍微回顾下前面两篇博客讲解的内容&#xff1a; 一、Cocos渲染效果的实现需要Material材质和Effect资源的互相配合。 二、Effect资源负责Shader片段的编写和属性配置&#xff0c;Material材质负责对E…

AI日报 - 2025年3月10日

AI日报 - 2025年3月10日 &#x1f31f; 今日概览&#xff08;60秒速览&#xff09; ▎&#x1f916; AGI突破 | Anthropic CEO预测强AI最早2026年到来 &#x1f52c; SAGE框架提升问答质量61.25%&#xff0c;Reflexion框架将GPT-4成功率提至91% ▎&#x1f4bc; 商业动向 | xA…

【SegRNN 源码理解】【今天不水文系列】编码器部分理解

我来小小的理解一下&#xff1a; 首先&#xff0c;16 batchsize&#xff0c;60sequendcelength&#xff0c;7 个特征的通俗解释 16 个独立的样本&#xff0c;每个样本有 60 个连续的时间步及对应的标签值&#xff0c;每个时间步有 60 个特征 所以就是因为样本是随机从训练集…