标签:bit pre std ++ efi gif amp isp eve
Means:
给你一串数列,问你这串数列的子串内没有重合的数,这串子串最大是多少。
Solve:
滑动窗口问题,设置两个指针l , r为起点,如果满足要求r++,不满足的话删除左区间元素,直到r遍历完数列
Code:
1 #include <bits/stdc++.h> 2 using namespace std; 3 #define CLR(x , v) memset(x , v , sizeof(x)) 4 static const int MAXN = 1e6 + 10; 5 int t , n; 6 int data[MAXN]; 7 set<int> s; 8 int ans = 0; 9 int main() 10 { 11 scanf("%d" , &t); 12 while(t--) 13 { 14 CLR(data , 0); 15 s.clear(); 16 ans = 0; 17 scanf("%d" , &n); 18 for(int i = 1 ; i <= n ; ++i) 19 scanf("%d" , data + i); 20 int l = 1 , r = 1; 21 while(r <= n) 22 { 23 while(r <= n && !s.count(data[r])) 24 s.insert(data[r++]); 25 int si = s.size(); 26 ans = max(ans , si); 27 s.erase(data[l++]); 28 } 29 printf("%d\n" , ans); 30 } 31 }
Uva11572-Unique Snowflakes(滑动窗口)
标签:bit pre std ++ efi gif amp isp eve
原文地址:http://www.cnblogs.com/jianglingxin/p/6727866.html