题目链接:https://uva.onlinejudge.org/external/115/11572.pdf

题意:找到一个尽量长的连续子序列 A~ AR ,使得该序列没有相同的元素。

分析:枚举超时,怎么优化呢? 当我不停的将右端点右移,当我移不动的时候,说明之前的 l ~ r  里面有一个和 r++的元素相同。

但是,不代表 l ~ r 就没有用了,他本身还是有作用的,只要将 l 右移即可。这样,单看这里,时间复杂度为O(n) ,

然后就是查看 r++ 的元素是否和前面的相同,用 set 集合,时间复杂度是 O(log n) ;

  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. const int maxn = + ;
  6.  
  7. int a[maxn];
  8.  
  9. int main()
  10. {
  11. int t;
  12. cin>>t;
  13. while(t--) {
  14. int n;
  15. cin>>n;
  16. for(int i=;i<n;i++)
  17. cin>>a[i];
  18.  
  19. set<int> s;
  20. int L = ;
  21. int R = ;
  22. int ans = ;
  23. while(R<n) {
  24. while(R<n&&!s.count(a[R])) s.insert(a[R++]);
  25. ans = max(ans,R-L);
  26. s.erase(a[L++]);
  27. }
  28. cout<<ans<<endl;
  29. }
  30.  
  31. return ;
  32. }

Uva 11572 唯一的雪花的更多相关文章

  1. UVa 11572 唯一的雪花(滑动窗口)

    https://vjudge.net/problem/UVA-11572 题意:输入一个长度为n的序列A,找到一个尽量长的连续子序列,使得该序列中没有相同的元素. 思路:很简单的题,也没啥好解释的了. ...

  2. UVa 11572 唯一的雪花(优化策略)

    题目描述: 输入一个长度为n(n<=1000000)的序列A, 找到一个尽量长的连续子序列A(L)-->A(R),是的该序列中没有相同的元素. 输入: T:代表组数 n:代表有n个数 这一 ...

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

    题目地址:UVa 11572 这样的方法曾经接触过,定义两个指针,不断从左向右滑动,推断指针内的是否符合要求. 这个题为了能高速推断是否有这个数,能够用STL中的set. 代码例如以下: #inclu ...

  4. UVA - 11572 Unique Snowflakes(唯一的雪花)(滑动窗口)

    题意:输入一个长度为n(n <= 10^6)的序列A,找到一个尽量长的连续子序列AL~AR,使得该序列中没有相同的元素. 分析: 法一:从r=0开始不断增加r,当a[r+1]在子序列a[l~r] ...

  5. ACM_买粽子(UVA唯一的雪花)

    买粽子 Time Limit: 2000/1000ms (Java/Others) Problem Description: 端午节快到了,小蛋准备到集市上买粽子.于是周六这天,小蛋和舍友搭着公交到了 ...

  6. 全局唯一Id:雪花算法

    雪花算法-snowflake 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的. 有 ...

  7. uva 11572 unique snowflakes——yhx

    Emily the entrepreneur has a cool business idea: packaging and selling snowakes. She has devised ama ...

  8. UVa 1635 (唯一分解定理) Irrelevant Elements

    经过紫书的分析,已经将问题转化为求组合数C(n-1, 0)~C(n-1, n-1)中能够被m整除的个数,并输出编号(这n个数的编号从1开始) 首先将m分解质因数,然后记录下每个质因子对应的指数. 由组 ...

  9. UVa 10375 (唯一分解定理) Choose and divide

    题意: 求组合数C(p, q) / C(r, s)结果保留5为小数. 分析: 先用筛法求出10000以内的质数,然后计算每个素数对应的指数,最后再根据指数计算答案. #include <cstd ...

随机推荐

  1. Electron、Node.js、JavaScript、JQuery、Vue.js、Angular.js,layui,bootstrap

    转载:https://blog.csdn.net/meplusplus/article/details/79033786 layui :是基于jquery库的封装开发. bootstrap:同样基于 ...

  2. sass注释中有中文出现报错解决方法

    在使用koala编译sass成css过程中出现这样的报错 后来查资料说是自己在sass中的注释中有中文引起的, 解决方案: 进入C:\Ruby25-x64\lib\ruby\gems\2.5.0\ge ...

  3. spring事务的传播性

    <!--配置事务传播特性 --><tx:advice id = "txAdvice" transaction-manager = "txManage&q ...

  4. python编程零碎积累

    例行程序 def routine():     lastday = ''     while True:         day = datetime.datetime.now().strftime( ...

  5. Docker Ubuntu/CentOS 下运行 java jar

    官方安装方法 https://docs.docker.com/engine/installation/linux/ubuntu/ Ubuntu安装包 https://download.docker.c ...

  6. (转)shell解析命令行的过程以及eval命令

    shell解析命令行的过程以及eval命令   本文说明的是一条linux命令在执行时大致要经过哪些过程?以及这些过程的大致顺序. 1.1 shell解析命令行 shell读取和执行命令时的大致操作过 ...

  7. jQuery.hover() 函数详解

    hover()函数用于为每个匹配元素的hover事件绑定处理函数. hover事件就是鼠标悬停事件.此外,你还可以额外传递给事件处理函数一些数据. 此外,你可以为同一元素多次调用该函数,从而绑定多个事 ...

  8. Aspose.Words导出图片 表格 Interop.Word

    先定义一个WORD 模板, 然后替换文本.域 ,定位开始表格 文本和段落 // Specify font formatting Aspose.Words.Font font = builder.Fon ...

  9. csdn下载

    按次收费: http://www.itziy.com/

  10. grep和管道

    1.管道命令: 可以连接多个Linux命令 命令1 | 命令2 | 命令3 2.grep  正则表达式  从文件或者字符串中搜索字符串 格式:grep  ‘’  file 返回符合规则的行 需求:查询 ...