(白書訓練計划)UVa 11572 Unique Snowflakes(窗口滑動法)


題目地址:UVa 11572

這種方法以前接觸過,定義兩個指針,不斷從左向右滑動,判斷指針內的是否符合要求。

這個題為了能快速判斷是否有這個數,可以用STL中的set。

代碼如下:

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <queue>
#include <map>
#include <set>
#include <algorithm>

using namespace std;
int a[1100000];
int main()
{
int t, n, l, r, i, max1;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
max1=-1;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
l=r=0;
set<int>q;
while(r!=n)
{
while(q.count(a[r]))
{
q.erase(a[l++]);
}
q.insert(a[r++]);
if(max1<r-l)
max1=r-l;
}
printf("%d\n",max1);
}
return 0;
}



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: