模板 最長公共子串行

2021-10-08 08:29:23 字數 987 閱讀 8397

題源:

問題能轉化成二分求最長上公升子串行

lower_bound()返回第乙個大於等於查詢值的位置

lower_bound()返回第乙個小於查詢值的位置

binary_search()返回判斷查詢值在不在的 bool 值

#include #define numm ch - 48

#define pd putchar(' ')

#define pn putchar('\n')

#define pb push_back

#define fi first

#define se second

#define fre1 freopen("1.txt", "r", stdin)

#define fre2 freopen("2.txt", "w", stdout)

typedef long long int ll;

typedef long long int ll;

using namespace std;

templatevoid read(t &res)

templatevoid write(t x)

//static auto _ = () ();

//#pragma gcc optimize(3,"ofast","inline")

//const int maxn = 1e5 + 5;

int n;

int tmp, b[maxn], idx[maxn];

int main()

memset(b, 0x3f, sizeof(b));

for (int i = 1; i <= n; i++)

write(lower_bound(b + 1, b + n + 1, b[0]) - b - 1);

return 0;

}

模板 最長公共子串行

以洛谷p1439為例 n可以開到1e5 tle mle 編譯都過不了 讀入a陣列後雜湊一波,然後將b陣列的值在雜湊陣列裡找到對應值並替換,於是變成了求b陣列最長上公升子串行 玄學 可以使用二分,時間複雜度o nlogn ac include include include include using...

模板 最長公共子串行

洛谷p1436 模板 我們定義對映f ai i,那麼兩個排列可以轉換為 f a1 f a2 f an 1,2,n 和 f b1 f b2 f bn 我們進行這樣的轉換之後,就把本題轉換為求最長上公升子串行的長度的題目了。最長上公升子串行存在o n log n 時間複雜度的演算法,概述如下 考慮兩個數...

luogu 模板 最長公共子串行

給出1 n的兩個排列p1和p2,求它們的最長公共子串行。輸入格式 第一行是乙個數n,接下來兩行,每行為n個數,為自然數1 n的乙個排列。輸出格式 乙個數,即最長公共子串行的長度 普通求最長公共子串行的dp i j 的方法肯定不行 但這裡每個元素的值都是確定的了.以f i 表示i長度為i的最長公共子串...