藍橋杯真題0團建dfs+哈希表/鄰接表

dfs+鄰接表儲存或者哈希表的運用,考察我們對數據的存儲

?

?

本題核心就是在求從根節點開始的兩棵樹相同的最長序列,首先確定用dfs進行深搜,對于節點的形式可以用鄰接表,鄰接矩陣,哈希表來進行存儲數據。下面看代碼

?鄰接表

#include <bits/stdc++.h>
using namespace std;
int n,m;
int mp[200005];
int np[200005];
vector<int> v1[200005];
vector<int> v2[200005];
int cont;//記錄最長的相同序列
void dfs(int x,int y,int sum)
{if(np[x]!=mp[y]) return;//如果序列開始不同直接returncont=max(cont,sum+1);//開始遍歷相鄰的節點for(auto& i:v1[x]){for(auto& j:v2[y]){dfs(i,j,sum+1);}}
}
int main()
{cin>>n>>m;for(int i=0;i<n;i++){cin>>np[i];}for(int j=0;j<m;j++){cin>>mp[j];}int l,r;for(int i=0;i<n-1;i++){cin>>l>>r;v1[l].push_back(r);}for(int i=0;i<m-1;i++){cin>>l>>r;//鄰接表儲存v2[l].push_back(r);}dfs(1,1,0);cout<<cont;return 0;
}

map?

#include <bits/stdc++.h>
#define N 200005
using namespace std;
map<int,vector<int>> m1,m2;
int n,m,a[N],b[N],ans,u,v;
void dfs(int x,int y,int count)
{if(a[x]!=b[y])return;ans=max(ans,count+1);//記錄最長相同序列長度for(int i=0;i<m1[x].size();i++){for(int j=0;j<m2[y].size();j++){int a1=m1[x][i];int b1=m2[y][j];}dfs(a1,b1,count+1);//搜索所有相鄰節點}
}
int main()
{cin>>n>>m;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=m;i++)cin>>b[i];for(int i=1;i<=n-1;i++){cin>>u>>v;m1[u].push_back(v);}for(int i=1;i<=m-1;i++){cin>>u>>v;m2[u].push_back(v);}dfs(1,1,0);
cout<<ans;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72936.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72936.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72936.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用 AIStor、MLflow 和 KServe 將模型部署到 Kubernetes

在之前幾篇關于 MLOps 工具的文章中&#xff0c;我展示了有多少流行的 MLOps 工具跟蹤與模型訓練實驗相關的指標。我還展示了他們如何使用 MinIO 來存儲作為模型訓練管道一部分的非結構化數據。但是&#xff0c;一個好的 MLOps 工具應該做的不僅僅是管理您的實驗、數據集和模型…

kali linux web掃描工具

Kali Linux是一款專為網絡安全領域而打造的操作系統&#xff0c;提供了眾多優秀的安全工具&#xff0c;其中就包括了強大的web掃描工具。Web掃描是網絡安全檢測的一個重要環節&#xff0c;它可以幫助安全專家檢測網站的漏洞&#xff0c;提升網站的安全性。 Kali Linux中集成了…

Linux losetup循環設備

好的&#xff0c;以下是命令的中文解釋和使用步驟&#xff1a; 命令解釋&#xff1a; losetup -r /dev/loop0 /system/app.bin&#xff1a; losetup 是一個用于將文件與循環設備&#xff08;loop device&#xff09;關聯的命令。-r 選項表示將循環設備設置為只讀模式。/dev/lo…

【js逆向】

地址&#xff1a;aHR0cHM6Ly93d3cud2VpYm90b3AuY24vMi4wLw f12進入 debugger&#xff0c;過debugger 查看預覽數據 全局搜索 請求網址中的 api.weibotop.cn 在下方疑似找到了加密和解密的函數 斷點調試 控制臺輸出 那個n就是 常見的 cryptoJs庫 const cryptoJs require(cry…

1.Intel BIOS 開發指南詳細介紹

1. 引言 目的: Intel BIOS 開發指南旨在為開發者提供詳細的指導,幫助他們理解和實現 Intel 平臺上的 BIOS 功能。 適用對象: 適用于希望開發、調試和優化 BIOS 的硬件工程師、軟件工程師和系統集成商。 版本信息: 確保你使用的是最新版本的指南,以獲取最新的信息和最佳實…

deepseek在pycharm中的配置和簡單應用

對于最常用的調試python腳本開發環境pycharm&#xff0c;如何接入deepseek是我們窺探ai代碼編寫的第一步&#xff0c;熟悉起來總沒壞處。 1、官網安裝pycharm社區版&#xff08;免費&#xff09;&#xff0c;如果需要安裝專業版&#xff0c;需要另外找破解碼。 2、安裝Ollama…

【論文閱讀】多模態——LSeg

文獻基本信息 標題&#xff1a;Language-Driven Semantic Segmentation作者&#xff1a;Boyi Li、Kilian Q. Weinberger、Serge Belongie、Vladlen Koltun、Ren Ranftl單位&#xff1a;Cornell University、University of Copenhagen、Apple、Intel Labs會議/期刊&#xff1a;…

【MySQL基礎-1】MySQL 用戶管理指南:創建用戶、修改密碼與權限分配

MySQL 作為廣泛使用的關系型數據庫管理系統&#xff0c;用戶管理和權限分配是其核心功能之一。合理創建用戶、修改密碼以及分配權限&#xff0c;不僅能保障數據庫的安全性&#xff0c;還能有效控制用戶的操作范圍。本文將詳細介紹如何在 MySQL 中創建用戶、修改用戶密碼以及分配…

影刀RPA編碼版與流程版解析

影刀RPA編碼版是影刀RPA的一個高級版本&#xff0c;它結合了流程版的可視化操作和編碼版的強大靈活性&#xff0c;以下是對影刀RPA編碼版的詳細介紹&#xff1a; 1. 功能對比 流程版&#xff1a; 可視化操作&#xff1a;通過拖拽式流程設計器&#xff0c;用戶可以像搭積木一樣…

20天 - TCP 和 UDP 有什么區別?說說 TCP 的三次握手?TCP 是用來解決什么問題?

TCP 和 UDP 有什么區別&#xff1f; TCP&#xff08;傳輸控制協議&#xff09;和 UDP&#xff08;用戶數據報協議&#xff09;都是傳輸層的網絡協議&#xff0c;它們的主要區別如下&#xff1a; 連接方式 TCP&#xff1a;面向連接的協議&#xff0c;類似于打電話&#xff0c…

【MySQL_05】語法簡述(是語法,不詳細介紹各種語句)

文章目錄 一、基本規則二、標識符規則三、數據類型四、運算符五、關鍵字六、SQL 語句的通用語法結構 歷史文章點擊&#x1f449;&#xff1a;SQL &#x1f408;??github&#xff1a;https://github.com/mysql &#x1f4bb;官網&#xff1a; https://www.mysql.com &#…

JavaScript中的生成器函數詳解

在 JavaScript 中&#xff0c;生成器函數 Generator Function 是一種特殊的函數&#xff0c;它允許你在函數執行過程中暫停和恢復。生成器函數通過 function* 語法定義&#xff0c;并使用 yield 關鍵字來控制函數的執行流程。生成器函數返回一個生成器對象&#xff0c;該對象遵…

計算機網絡——交換機

一、什么是交換機&#xff1f; 交換機&#xff08;Switch&#xff09;是局域網&#xff08;LAN&#xff09;中的核心設備&#xff0c;負責在 數據鏈路層&#xff08;OSI第二層&#xff09;高效轉發數據幀。它像一位“智能交通警察”&#xff0c;根據設備的 MAC地址 精準引導數…

Git合并工具在開發中的使用指南

在團隊協作開發中&#xff0c;Git 是最常用的版本控制工具&#xff0c;而代碼合并&#xff08;Merge&#xff09;是多人協作不可避免的環節。當多個開發者同時修改同一文件的相同區域時&#xff0c;Git 無法自動完成合并&#xff0c;此時需要借助合并工具&#xff08;Merge Too…

實現多語言適配

1.在res下創建多語言資源文件&#xff1a; 2.選擇需要的語言 然后得到多種語言適配string文件&#xff1a; 3.代碼設置多語言 object LanguageHelper {/*** 獲取適配的 Context*/fun getAttachBaseContext(context: Context): Context {return if (Build.VERSION.SDK_INT > …

【學習方法一】

學習方法一 一、通用高效學習法二、學科專項方法三、工具與技術輔助四、習慣與心理策略五、避免常見誤區總結六、進階學習策略七、解決學習痛點八、場景化學習法九、資源與工具推薦十、個性化學習調整十一、長期學習心態十二、常見問題QA十三、應對特殊挑戰的學習法十四、健康與…

Golang學習筆記_44——命令模式

Golang學習筆記_41——觀察者模式 Golang學習筆記_42——迭代器模式 Golang學習筆記_43——責任鏈模式 文章目錄 一、核心概念1. 定義2. 解決的問題3. 核心角色4. 類圖 二、特點分析三、適用場景1. 事務管理系統2. 多媒體遙控器3. 操作審計系統 四、Go語言實現示例五、高級應用…

應急響應--流量分析

&#xff08;一&#xff09;Cobalt Strike流量特征分析 1.HTTP特征 源碼特征&#xff1a; 在流量中&#xff0c;通過http協議的url路徑&#xff0c;在checksum8解密算法計算后&#xff0c;32位的后門得到的結果是92&#xff0c;64位的后門得到的結果是93&#xff0c;該特征符…

CI/CD—Jenkins配置一次完整的jar自動化發布流程

背景&#xff1a; 實現設想&#xff1a; 要創建自動化發布&#xff0c;需要準備一臺測試服務器提前安裝好java運行所需的環境&#xff0c;JDK版本最好和Windows開發機器上的版本一致&#xff0c;在Jenkins上配置將構建好的jar上傳到測試服務器上&#xff0c;測試服務器自動啟動…

創建分區表ORA-14037

1、故障現象 在跑腳本的時候創建物化試圖提示分區界限過高 2、解決方法 最終原因是&#xff1a;缺少了 這個 r34411分區&#xff0c;加上就好。 判斷是物化視圖創建的時候需要兼容所有分區的數據&#xff0c;所以報錯&#xff0c;而分區表則不存在這種情況 3、測試驗證 分區…