輸入兩個01串,輸出它們的最長公共子串行的長度
輸入格式:
一行,兩個01串
輸出格式:
最長公共子串行的長度
輸入樣例#1: 複製
01010101010 00000011111輸出樣例#1: 複製
601串長度≤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。棋子是沒有區別的 跳動的規則很簡單,任意選一顆棋子,對一顆中軸棋子跳動。跳動後兩顆棋子距離不變。一...