時間限制:
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
樣例輸出
25
**poj月賽改編
上傳者張云聰
由於數字太大無法用陣列模擬,所以先離散化資料,然後尺取法即可。
(ps: 標程是雜湊+佇列,離散化+尺取法可以卡過去(stl會tle))
#include #include #include #include #include #include #include #include #define me(a,b) memset(a,b,sizeof(a))
#define sc(a) scanf("%d",&a)
using namespace std;
const int maxn=1e6+10;
int t;
int num[maxn];
int a[maxn];
int main()
//———————————————————————————————————————————離散化—————————————————————————————————————
sort(a+1,a+n+1);
int cnt=1;
for(int i=2;i<=n;i++)
int maxx=cnt; //元素的數目
for(int i=1;i<=n;i++)
else if(a[mid]
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 ...
(二分,尺取,離散化)1686 第K大區間
1 秒131,072 kb 40 分 4 級題 定義乙個區間的值為其眾數出現的次數。現給出n個數,求將所有區間的值排序後,第k大的值為多少。收起 第一行兩個數n和k 1 n 100000,k n n 1 2 第二行n個數,0 每個數 2 31乙個數表示答案。4 2 1 2 3 22題解 二分 尺取 ...