Uva11572-Unique Snowflakes(滑动窗口)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Uva11572-Unique Snowflakes(滑动窗口)相关的知识,希望对你有一定的参考价值。

 技术分享

 

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 }
View Code

以上是关于Uva11572-Unique Snowflakes(滑动窗口)的主要内容,如果未能解决你的问题,请参考以下文章

UVA - 11572 Unique Snowflakes

(白书训练计划)UVa 11572 Unique Snowflakes(窗体滑动法)

Uva11572-Unique Snowflakes(滑动窗口)

UVa 11572 Unique Snowflakes 算法分析

11572 - Unique Snowflakes(贪心,两指针滑动保存子段最大长度)

如何在 Snowflake 中找到我的 Snowflake 账单?