ZR#996
ZR#996
解法:
若删除长度为 $ x $ 的子串后序列中没有相同元素,那么一定有至少一个长度为 $ x+1 $ 的子串,删除它后序列中也没有相同元素。
CODE:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;
#define LL long long
#define INF 2147483647
#define N 2010
int a[N],n,ans = INF;
map<int,int> Hash;
int main() {
scanf("%d",&n);
for(int i = 1 ; i <= n ; i++)
scanf("%d",&a[i]);
int cnt = n;
while(cnt >= 1) {
if(Hash[a[cnt]] >= 1) break;
Hash[a[cnt]]++;
cnt--;
}
for (int i = 1; i <= n; i++) {
ans = min(ans, cnt - i + 1);
Hash[a[i]]++;
while (Hash[a[i]] >= 2 && cnt <= n) {
cnt++;
Hash[a[cnt]]--;
}
if (Hash[a[i]] >= 2)break;
}
printf("%d\n", ans);
//system("pause");
return 0;
}
有些路你和某人一起走,就长得离谱,你和另外一些人走,就短得让人舍不得迈开脚步。