Uva 11572 Unique snowflakes

来源:互联网 发布:淘宝现金券 编辑:程序博客网 时间:2024/05/24 04:40

比较简单的一道题目,一边遍历数据一边记录已经遍历的数据,同时在遍历的时候还要判断该数据是否之前已经被遍历过,如果被遍历过,那么就将该数据以及之前已经遍历到的数据清除,同时要注意记录遍历的数据的最大的长度,最后输出结果即可,具体实现见如下代码:

#include<iostream>#include<vector>#include<string>#include<set>#include<stack>#include<queue>#include<map>#include<algorithm>#include<cmath>#include<iomanip>#include<cstring>#include<sstream>#include<cstdio>#include<deque>#include<functional>using namespace std;int main(){int T;cin >> T;int n;while (T--){cin >> n;vector<int> v;for (int i = 0; i < n; i++){int t;cin >> t;v.push_back(t);}set<int> s;int res = -1;int temp = 0;for (int i = 0; i < n; i++){if (s.find(v[i]) == s.end()){temp++;s.insert(v[i]);}else{int ind = i - s.size();while (ind < i&&v[ind]!=v[i]){s.erase(v[ind]);ind++;temp--;}}res = max(res, temp);}cout << res << endl;}}