[容易] UVa OJ 11572 Unique Snowflakes 滑动窗口
2017-09-05 10:55
357 查看
题目描述
基本思路:
本题实际上就是找各元素互不相同的最长连续子序列,因为是连续的,所以可以采用滑动窗口来做,若L为窗口的左端点,R为窗口的右端点,则先扩展R,如果不能继续扩展,则扩展L,继续扩展R,直到R指向全序列的最后一个元素。
具体代码:
#include <iostream>
#include <set>
#include <vector>
using namespace std;
vector<int> sf;
int solve()
{
int ans=1;
//int i=0,j=0;
int n=sf.size();
set<int> seq;
seq.clear();
seq.insert(sf[0]);
int i=0,j=1;
for(;i<n;++i)
{
for(;j<n;++j)
{
if(seq.count(sf[j]))
break;
else
seq.insert(sf[j]);
}
ans=max(ans,j-i);
if(j>=n)
break;
seq.erase(sf[i]);
}
return ans;
}
int main()
{
//freopen("input.txt","r",stdin);
int kn;
cin>>kn;
for(int kase=1;kase<=kn;++kase)
{
sf.clear();
int n;
cin>>n;
if(n==0)
{
cout<<"0"<<endl;
continue;
}
for(int i=0;i<n;++i)
{
int t;
cin>>t;
sf.push_back(t);
}
cout<<solve()<<endl;
}
return 0;
}
基本思路:
本题实际上就是找各元素互不相同的最长连续子序列,因为是连续的,所以可以采用滑动窗口来做,若L为窗口的左端点,R为窗口的右端点,则先扩展R,如果不能继续扩展,则扩展L,继续扩展R,直到R指向全序列的最后一个元素。
具体代码:
#include <iostream>
#include <set>
#include <vector>
using namespace std;
vector<int> sf;
int solve()
{
int ans=1;
//int i=0,j=0;
int n=sf.size();
set<int> seq;
seq.clear();
seq.insert(sf[0]);
int i=0,j=1;
for(;i<n;++i)
{
for(;j<n;++j)
{
if(seq.count(sf[j]))
break;
else
seq.insert(sf[j]);
}
ans=max(ans,j-i);
if(j>=n)
break;
seq.erase(sf[i]);
}
return ans;
}
int main()
{
//freopen("input.txt","r",stdin);
int kn;
cin>>kn;
for(int kase=1;kase<=kn;++kase)
{
sf.clear();
int n;
cin>>n;
if(n==0)
{
cout<<"0"<<endl;
continue;
}
for(int i=0;i<n;++i)
{
int t;
cin>>t;
sf.push_back(t);
}
cout<<solve()<<endl;
}
return 0;
}
相关文章推荐
- UVA-11572 Unique Snowflakes(滑动窗口)
- UVA - 11572 Unique Snowflakes(唯一的雪花) : 滑动窗口
- 【高效算法设计——滑动窗口】UVa 11572 Unique Snowflakes
- UVa 11572 Unique snowflakes【滑动窗口】
- Uva11572 Unique Snowflakes【滑动窗口】【例题8-7】
- UVA - 11572 Unique Snowflakes 滑动窗口
- UVA ~ 11572 ~ Unique Snowflakes(滑动窗口)
- UVA 11572 Unique Snowflakes (滑动窗口)
- UVa OJ 11572 - Unique Snowflakes
- UVa 11572 - Unique Snowflakes (滑动窗口STL_map||set) 好题!!!
- 11572 Unique snowflakes
- UVA 11572(p239)----Unique snowflakes
- UVa 11572 Unique Snowflakes——思路题
- UVA 11572 Unique Snowflakes
- UVA 11572 Unique Snowflakes
- Uva 11572 Unique snowflakes
- uva 11572 Unique Snowflakes
- uva 11572 Unique Snowflakes
- UVa11572 Unique Snowflakes (贪心+尺取法+set容器)
- 解题报告 之 UVA11572 Unique Snowflakes