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.pswp.cn/diannao/72905.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72905.shtml
英文地址,請注明出處:http://en.pswp.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 個特征 所以就是因為樣本是隨機從訓練集…