国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

最長公共子序列(上海交通大學(xué)考研機試題)

這篇具有很好參考價值的文章主要介紹了最長公共子序列(上海交通大學(xué)考研機試題)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

題目描述

給出兩個長度為 n 的整數(shù)序列,求它們的最長公共子序列(LCS)的長度,保證第一個序列中所有元素都不重復(fù)。

注意:
第一個序列中的所有元素均不重復(fù)。
第二個序列中可能有重復(fù)元素。
一個序列中的某些元素可能不在另一個序列中出現(xiàn)。

輸入樣例

5
2 1 3 8 7
2 9 3 4 5

輸入樣例

2

數(shù)據(jù)范圍

1 ≤ n ≤ 1 0 6 1≤n≤10^6 1≤n≤106, 序列內(nèi)元素取值范圍 [ 1 , 1 0 6 ] [1,10^6] [1,106]

分析

此題的數(shù)據(jù)量達(dá)到了1e6故不能用傳統(tǒng)的 o ( n 2 ) o(n^2) o(n2)的dp做法,需考慮 o ( n l o g n ) o(nlogn) o(nlogn)的做法。
由于第一個序列中元素不重復(fù),這是一個典型的最長公共子序列轉(zhuǎn)換為最長上升子序列問題。


最長上升子序列求法 O ( n l o g n ) O(nlogn) O(nlogn)

首先我們看看最長公共子序列的求解過程是什么樣子的?

A: 2 1 3 8 7
B: 2 9 3 4 5

ans = {2, 3};

就是從B中按照下標(biāo)從小到大的順序(從左至右)去A中找相同的數(shù)字,且在A中數(shù)字的下標(biāo)也需要是遞增的(也需要從左至右)

我們用另一種方式模擬這個過程

① 我們先將A中的數(shù)字和下標(biāo)存儲在idx數(shù)組中idx[key] = value,key 對應(yīng)的是A中的值,value對應(yīng)的是A中元素值對應(yīng)的下標(biāo);

② 再按照坐標(biāo)序遍歷B中的元素,找到其在A中的位置idx[key], 找到一個我們就處理這個元素的下標(biāo)到f數(shù)組中,將f數(shù)組維護為遞增數(shù)組(剛剛我們說到A,B的子序列下標(biāo)都需要是遞增的);

f 數(shù)組維護的是B數(shù)組元素在A數(shù)組元素中的下標(biāo)

時間復(fù)雜度

O ( n l o g n ) O(nlogn) O(nlogn)文章來源地址http://www.zghlxwxcb.cn/news/detail-705854.html

C++ 代碼
#include <bits/stdc++.h>

using namespace std;

const int N = 1e6 + 7;

int idx[N], f[N];
int cnt;
int n;

int find(int x) {
    int l = 0, r = cnt;
    while (l < r) {
        int mid = l + r >> 1;
        if (f[mid] >= x) r = mid;
        else l = mid + 1;
    }
    
    return l;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    
    cin >> n;
    memset(idx, -1, sizeof idx);
    
    for (int i = 1; i <= n; i ++ ) {
        int x;
        cin >> x;
        idx[x] = i;     // 記錄數(shù)組中每個值的下標(biāo)是多少
    }
    
    
    for (int i = 1; i <= n; i ++ ) {
        int x;
        cin >> x;
        
        int k = idx[x];
        if (k == -1) continue;
        
        if (k > f[cnt]) f[ ++ cnt ] = k;    // 如果當(dāng)前下標(biāo)大于f數(shù)組末尾元素下標(biāo)就直接加入f數(shù)組
        else {
            int p = find(k);    // 找到大于等于k的第一個數(shù)的下標(biāo)
            f[p] = k;           // 將下標(biāo)的對應(yīng)值替換掉
        }
    }
    
    cout << cnt << endl;
    return 0;
}

到了這里,關(guān)于最長公共子序列(上海交通大學(xué)考研機試題)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【智能車】上海交通大學(xué)AuTop戰(zhàn)隊開源算法提綱備忘

    【智能車】上海交通大學(xué)AuTop戰(zhàn)隊開源算法提綱備忘

    本文是作者在學(xué)習(xí)上海交通大學(xué)AuTop戰(zhàn)隊開源算法時列的提綱備忘,并做了很多資料的鏈接,像是一個目錄,分享給大家一起學(xué)習(xí), 如有侵權(quán),聯(lián)系刪除; 參考:https://github.com/SJTU-AuTop 1. 固定閾值二值化 2. 大津法(OTSU)閾值 3. 自適應(yīng)閾值 總結(jié): 1. “迷宮法”進行邊線提取

    2024年02月02日
    瀏覽(27)
  • 新中特復(fù)習(xí)筆記二——章節(jié)整理上(上海交通大學(xué))

    本文根據(jù)復(fù)習(xí)ppt整理,猜測考點與題型均為老師的個人猜測,不做保證。感覺很多知識點重在理解,大家有空可以把對應(yīng)的前后文看看!祝大家身體健康,考試順利??!?? ps:本文是博主復(fù)??初愈下整理的,腦子感覺不太好,可能有很多遺漏或者錯誤的地方,歡迎大家指出

    2024年02月03日
    瀏覽(26)
  • 上海交通大學(xué)電院夏令營直博保姆級攻略

    目錄 寫在前面 個人情況 報名【5月25日至6月26日】 面試【7月9日or7月10日】 面試結(jié)果通知與雙選競爭【8月1日至9月初】 雙選的一些TIPS 福(廣)利(告)時間:Top1%室友的保研大寶箱! 本攻略主要是對2022年上海交通大學(xué)夏令營從報名到成功上岸與老師雙選經(jīng)驗的記錄。所有流

    2024年02月15日
    瀏覽(27)
  • 體驗文心一言AI大模型生成伊利諾伊大學(xué)香檳分校、復(fù)旦大學(xué)、上海交通大學(xué)、東南大學(xué)和加州伯克利大學(xué)簡介

    體驗文心一言AI大模型生成伊利諾伊大學(xué)香檳分校、復(fù)旦大學(xué)、上海交通大學(xué)、東南大學(xué)和加州伯克利大學(xué)簡介

    UIUC(University of Illinois at Urbana-Champaign)是美國伊利諾伊大學(xué)香檳分校的簡稱。該學(xué)校成立于1868年,位于美國伊利諾伊州香檳市,是一所公立研究型大學(xué)。UIUC是美國著名的常春藤盟校之一,在多個學(xué)科領(lǐng)域享有聲譽,包括工程、商科、建筑、心理學(xué)、法學(xué)、醫(yī)學(xué)、農(nóng)學(xué)等。

    2024年02月11日
    瀏覽(39)
  • 跑通GICI-LIB——上海交通大學(xué)開源GNSS/INS/Camera組合導(dǎo)航庫

    跑通GICI-LIB——上海交通大學(xué)開源GNSS/INS/Camera組合導(dǎo)航庫

    GICI-LIB是由上海交通大學(xué)池澄博士開源的GNSS/INS/Camera組合導(dǎo)航庫 GICI-LIB原文鏈接:C. Chi, X. Zhang, J. Liu, Y. Sun, Z. Zhang, and X. Zhan, \\\"GICI-LIB: A GNSS/INS/Camera Integrated Navigation Library,\\\" arXiv preprint, arXiv:2306.13268. ?https://doi.org/10.48550/arXiv.2306.13268. GICI-LIB有以下幾個特點: 基于 因子圖優(yōu)化(

    2024年02月08日
    瀏覽(20)
  • 最長公共子序列和最長公共子串

    最長公共子序列 題目描述 給出1,2,…, n 的兩個排列P 1 和 P 2 ,求它們的最長公共子序列。 輸入格式 第一行是一個數(shù) n 。 接下來兩行,每行為 n 個數(shù),為自然數(shù)1,2,…, n 的一個排列。 輸出格式 一個數(shù),即最長公共子序列的長度。 題目分析 第一階段定義dp數(shù)組 (1)考慮規(guī)模

    2024年02月19日
    瀏覽(21)
  • 最長公共子序列(詳細(xì)代碼 注釋 分析 以及求出最長公共子序列內(nèi)容方法)

    最長公共子序列(詳細(xì)代碼 注釋 分析 以及求出最長公共子序列內(nèi)容方法)

    文章有些長,希望能夠耐心看完,并且對你有幫助,文章是自己看了書之后,總結(jié)的,如果有什么錯誤的地方,歡迎指出。 一些基本的概念: 子序列: 原序列中刪除若干個元素得到的序列,即原序列中可以不連續(xù)的一段 子串: 原序列中任意個連續(xù)的序列元素組成的序列,

    2023年04月15日
    瀏覽(22)
  • 【算法訓(xùn)練-字符串 三】最長公共子串、最長公共子序列

    【算法訓(xùn)練-字符串 三】最長公共子串、最長公共子序列

    廢話不多說,喊一句號子鼓勵自己:程序員永不失業(yè),程序員走向架構(gòu)!本篇Blog的主題是【】,使用【】這個基本的數(shù)據(jù)結(jié)構(gòu)來實現(xiàn),這個高頻題的站點是: CodeTop ,篩選條件為: 目標(biāo)公司+最近一年+出現(xiàn)頻率排序 ,由高到低的去 ??蚑OP101 去找,只有兩個地方都出現(xiàn)過才做

    2024年02月09日
    瀏覽(22)
  • 【LeetCode動態(tài)規(guī)劃#14】子序列系列題(最長遞增子序列、最長連續(xù)遞增序列、最長重復(fù)子數(shù)組、最長公共子序列)

    【LeetCode動態(tài)規(guī)劃#14】子序列系列題(最長遞增子序列、最長連續(xù)遞增序列、最長重復(fù)子數(shù)組、最長公共子序列)

    力扣題目鏈接(opens new window) 給你一個整數(shù)數(shù)組 nums ,找到其中最長嚴(yán)格遞增子序列的長度。 子序列是由數(shù)組派生而來的序列,刪除(或不刪除)數(shù)組中的元素而不改變其余元素的順序。例如,[3,6,2,7] 是數(shù)組 [0,3,1,6,2,2,7] 的子序列。 示例 1: 輸入:nums = [10,9,2,5,3,7,101,18] 輸出

    2024年02月01日
    瀏覽(28)
  • 動態(tài)規(guī)劃——最長公共子序列

    動態(tài)規(guī)劃——最長公共子序列

    先來講解以下什么是最長公共子序列。最長公共子序列不是最長相同字符串,有點相似但不一樣,來舉個簡單的例子,有字符串s1=bcdea,s2=abce,最長相同字符串是bc,最大公共部分是2;而最長公共子序列則是bce,最大公共部分是3??梢钥闯?,公共子序列不需要連續(xù)相等,有相

    2023年04月19日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包