UVa11572 Unique Snowflakes (贪心+尺取法+set容器)
来源:互联网 发布:java获取当前端口号 编辑:程序博客网 时间:2024/06/06 07:30
题目链接:https://vjudge.net/problem/UVA-11572
题目大意:给你一段数字序列,从序列里取出一段子序列,要求子序列里没有重复的数字,让你求出子序列最大的长度是多少?
题目分析:序列的长度为1e6 那么n^2复杂度的算法基本被排除了,这里可以用到set,set的查找和输入都是logn级别的,那么我们只需要O(n)处理一下这个序列就好了
解决方法:尺取法,设l r ans ,根据贪心 r能取多大取多大,每次验证一下,如果不满足l++,在重复上一步,一直循环下去,直到r>=n
学到的东西:1>尺取法的应用:个人感觉关于求解有一定限制条件的序列的子序列的相关问题,尺取法可能会有发挥的地方
2>set的使用:查询数据是否重复时非常非常非常有用!!!
找到一篇大佬的博文,关于set的简单用法:http://blog.csdn.net/u010480899/article/details/52311316
代码:
#include <cstdio>#include <set>#include <algorithm>using namespace std;const int maxn=1e6+10;int a[maxn];int main(){ int T;while(~scanf("%d",&T)){ while(T--){ int n;scanf("%d",&n); for(int i=0;i<n;i++)scanf("%d",&a[i]); set<int>s; int l=0,r=0,ans=0; while(r<n){ while(r<n&&!s.count(a[r])) s.insert(a[r++]);//set的插入与查找 ans=max(ans,r-l); s.erase(a[l++]);//set的删除 } printf("%d\n",ans); } }}
阅读全文
1 0
- UVa11572 Unique Snowflakes (贪心+尺取法+set容器)
- UVA11572 Unique Snowflakes(滑窗)
- Uva11572-Unique Snowflakes
- [UVA11572]Unique Snowflakes[构造]
- BNU19990 UVA11572 Unique Snowflakes
- UVA 11572:Unique Snowflakes (尺取法)
- UVa--11572 Unique Snowflakes(尺取法)
- 解题报告 之 UVA11572 Unique Snowflakes
- UVA11572:Unique Snowflakes(唯一的雪花)
- UVa11572 - Unique Snowflakes(最长的不重复的子数组)
- uva11572 Unique Snowflakes 入门经典II 例题8-7
- Uva11572 Unique Snowflakes【滑动窗口】【例题8-7】
- hdu4268(贪心+set容器)
- Unique Snowflakes
- Unique Snowflakes
- 尺取法(小知识点,贪心)
- UVa 11572 - Unique Snowflakes (滑动窗口STL_map||set) 好题!!!
- UVA-11572Unique Snowflakes(滑动窗口)
- JSP与JavaBean相关的动作标签
- AtomicInteger类的理解与使用
- 值类型和引用类型
- java word 模板 数据填充
- Android中去掉标题栏(项目名称那栏)正确方法!
- UVa11572 Unique Snowflakes (贪心+尺取法+set容器)
- eclipse出现There are no resources that can be added or removed from the server
- 2017/06/21 星榕基笔试题
- 网口信号灯的作用
- Spark SQL Hive Tables
- CentOS openJdk1.7升级1.8
- 字符集ANSI、UNICODE和VCEmpress局限
- Ubuntu 汉化
- Linux文件颜色含义