時間限制:
3000 ms | 記憶體限制:
65535 kb
難度:5 描述
給定乙個序列,請你求出該序列的乙個連續的子串行,使原串中出現的所有元素皆在該子串行中出現過至少1次。
如2 8 8 8 1 1,所求子串就是2 8 8 8 1。
輸入
第一行輸入乙個整數t(0
輸出對於每組輸入,輸出包含該序列中所有元素的最短子串行的長度
樣例輸入
251 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 如果分別...