nyoj 133 子串行 尺取法 離散化

2021-07-17 04:29:51 字數 887 閱讀 9767

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:5 描述

給定乙個序列,請你求出該序列的乙個連續的子串行,使原串中出現的所有元素皆在該子串行中出現過至少1次。

如2 8 8 8 1 1,所求子串就是2 8 8 8 1。

輸入

第一行輸入乙個整數t(0

輸出對於每組輸入,輸出包含該序列中所有元素的最短子串行的長度

樣例輸入

2

51 8 8 8 1

62 8 8 8 1 1

樣例輸出

2

5

解題思路:這道題資料比較大,可以先用離散化。接下來就是經典的尺取法了。。

#include#include#include#include#include#includeusing namespace std;

const int maxn = 1000005;

const int inf = 0x3f3f3f3f;

int n,cnt,a[maxn],tmp[maxn];

int idx[maxn],count[maxn];

int bisearch(int l,int r,int key)

}void discrete()

int main()

discrete();

memset(count,0,sizeof(count));

int r = 1,sum = 0,ans = inf;

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

}printf("%d\n",ans);

} return 0;

}

nyoj 133 子串行 (離散化 尺取法)

時間限制 3000 ms 記憶體限制 65535 kb 難度 5 描述 給定乙個序列,請你求出該序列的乙個連續的子串行,使原串中出現的所有元素皆在該子串行中出現過至少1次。如2 8 8 8 1 1,所求子串就是2 8 8 8 1。輸入 第一行輸入乙個整數t 0 輸出對於每組輸入,輸出包含該序列中所有...

nyoj133 子串行 雜湊 佇列

描述 給定乙個序列,請你求出該序列的乙個連續的子串行,使原串中出現的所有元素皆在該子串行中出現過至少1次。如2 8 8 8 1 1,所求子串就是2 8 8 8 1。輸入 第一行輸入乙個整數t 0 輸出對於每組輸入,輸出包含該序列中所有元素的最短子串行的長度 樣例輸入 2 51 8 8 8 1 62 ...

nyoj 最長公共子串行

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述咱們就不拐彎抹角了,如題,需要你做的就是寫乙個程式,得出最長公共子串行。tip 最長公共子串行也稱作最長公共子串 不要求連續 英文縮寫為lcs longest common subsequence 其定義是,乙個序列 s 如果分別...