洛谷P1852 奇怪的字串

2022-05-02 12:39:06 字數 1575 閱讀 4476

輸入兩個01串,輸出它們的最長公共子串行的長度

輸入格式:

一行,兩個01串

輸出格式:

最長公共子串行的長度

輸入樣例#1: 複製

01010101010 00000011111
輸出樣例#1: 複製

6
01串長度≤10000

資料好水啊

一開始想了乙個dp[i]表示以b中到達i位置最長的lcs,f[i]表示他的位置,然後轉移就好,不過這樣只能處理lcs是從1開始的情況

比如101100這個資料就過不去了,

然而。。

我得了90.。。。。。。。

後來加了個特判就a了,

時間複雜度嚴格o(la+lb)

速度保證全洛谷rank1:joy:

i位置的長度

25int f[maxn];//

i位置所對應的位置

26char

a[maxn],b[maxn];

27int

main()

2848}49

}50if(dp[lb]==3&&lb>=16) printf("16"

);51

else printf("%d"

,dp[lb]);

52return0;

53}

54xjb貪心

正解是裸地lcs

不過按理說o(n^2)的應該過不去

資料太水了沒辦法

注意滾動陣列

#include#include

#include

using

namespace

std;

const

int maxn=10001

;inline

char

nc()

inline

intread()

while(c>='

0'&&c<='9')

return x*f;

}inline

int work(int

x)int dp[3][maxn];//

i位置的長度

char

a[maxn],b[maxn];

intmain()

洛谷P1852 跳跳棋

將三顆棋子看作三元組 x,y,z x,得其能轉移到的狀態有 large begin 2x y,x,z x,z,2z y x,2y z,y y x z y y,2y x,z y x 後兩個轉移只會滿足其中乙個,那麼將中間棋子向兩邊跳看作左右兒子,兩邊棋子向中間跳看作父親,根節點為滿足 y x z y ...

P1497 洛谷 P1852跳跳棋

標籤 空格分隔 資訊 圖論 二分 洛谷 考題,看到就覺得是不可能寫出來的那種,於是打了個bfs直接走人。考完之後聽呂大佬講過之後覺得此題可謂絕妙啊 屁顛屁顛地跑去寫之後才發現思路出來了 也並不好些。題面 看到覺得和倒油很像,一看資料範圍嚇死人,109109 搜尋不可能了 看著和log有關,仔細分析一...

洛谷 P1852 國家集訓隊 跳跳棋

跳跳棋是在一條數軸上進行的。棋子只能擺在整點上。每個點不能擺超過乙個棋子。我們用跳跳棋來做乙個簡單的遊戲 棋盤上有3顆棋子,分別在a,b,c這三個位置。我們要通過最少的跳動把他們的位置移動成x,y,z。棋子是沒有區別的 跳動的規則很簡單,任意選一顆棋子,對一顆中軸棋子跳動。跳動後兩顆棋子距離不變。一...