标签:-- 思路 hash 子序列 string mod long closed ide
题目大意:
一个数列a,找到一个尽量长的连续子序列 ax 到 ay,使得该系列中没有相同的元素,求数列长度
思路:
滑动窗口
每次判断窗口内是否有重复即可
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cmath> 5 #include<cstdlib> 6 #include<cstring> 7 #include<queue> 8 #include<vector> 9 #define inf 2147483611 10 #define ll long long 11 #define MAXN 1010101 12 #define MOD 13 using namespace std; 14 inline ll read() 15 { 16 ll x=0,f=1; 17 char ch;ch=getchar(); 18 while(!isdigit(ch)) {if(ch==‘-‘) f=-1;ch=getchar();} 19 while(isdigit(ch)) {x=x*10+ch-‘0‘;ch=getchar();} 20 return x*f; 21 } 22 int l,r,ans,n,a[MAXN],hash[MAXN]; 23 int main() 24 { 25 n=read(); 26 l=r=1; 27 for(int i=1;i<=n;i++) a[i]=read(); 28 while(r<n) 29 { 30 while(r<n) 31 { 32 if(!hash[a[r+1]]) hash[a[r++]]++; 33 else break; 34 } 35 ans=max(ans,r-l+1); 36 while(hash[a[r+1]]) {hash[a[l++]]--;} 37 } 38 printf("%d",ans); 39 }
标签:-- 思路 hash 子序列 string mod long closed ide
原文地址:http://www.cnblogs.com/yyc-jack-0920/p/7629020.html