UVA11572_Unique Snowflakes
超级经典的题目,扫描区间,滑动窗口
对这题目的最大感受就是,单独看这个题目,其实不难,但是很多我感觉挺难或者没做出来的题目,都是由这些若干个经典的算法组合而成的
滑动窗口便是一个典型的例子!!!!遇到过好几道用到滑动窗口的题目
而本题则赤裸裸的滑动窗口
题意:
输入一个长度为n的序列A,找一个尽可能长的子序列使他们之间无重复元素
思路:
第一步,自己暴力模拟
第二步,找规律,尝试着状态转移
第三步,修正,实现
首先不能重复,那么我们先假设区间[l, r] 无重复元素,那么加入一个元素a[r+1],会出现什么变化呢???
如果原来的区间没有a[r+1]那么新的区间仍然是一个无重复元素的区间,否则的话,移动左边界,一直到使他们没有重复
这题wa了几发,,原因是在循环的时候,边界判断错误
实现的话就用cnt[maxn]来记录区间里面的元素信息,右边界右移cnt[x]++,左边界则是cnt[x]--;
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<queue>
#include<cstdlib>
#include<algorithm>
#include<stack>
#include<map>
#include<queue>
#include<vector>
#include<set>
using namespace std;
const int maxn=1e6+5;
int A[maxn];
int main(){
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int n,t;
cin>>t;
while(t--){
cin>>n;
int r,l,ans;ans=l=r=0;
for(int i=0;i<n;i++) cin>>A[i];
set<int>s;
while(r<n){
while(r<n&&!s.count(A[r])) s.insert(A[r++]);
ans=max(ans,r-l);
s.erase(A[l++]);
}
cout<<ans<<endl;
}
return 0;
}
UVA11572_Unique Snowflakes的更多相关文章
- POJ 3349 Snowflake Snow Snowflakes(简单哈希)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 39324 Accep ...
- Snowflake Snow Snowflakes(哈希表的应用)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 27312 Accep ...
- poj 3349:Snowflake Snow Snowflakes(哈希查找,求和取余法+拉链法)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 30529 Accep ...
- POJ 3349 Snowflake Snow Snowflakes
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 27598 Accepted: ...
- POJ 3349:Snowflake Snow Snowflakes(数的Hash)
http://poj.org/problem?id=3349 Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K T ...
- 哈希-Snowflake Snow Snowflakes 分类: POJ 哈希 2015-08-06 20:53 2人阅读 评论(0) 收藏
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 34762 Accepted: ...
- [poj3349]Snowflake Snow Snowflakes(hash)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 37615 Accepted: ...
- Hash (poj2002-Squares & poj3349-Snowflake Snow Snowflakes)
//突然发现好弱,好多基础的算法竟然都不会,哈希这种经典的算法,我貌似基本没怎么做过相关的题0.0 POJ2002 题意:给n个点,问有多少组四个点能组成正方形. 题解:枚举两个点,通过公式算出另外两 ...
- POJ 3349 Snowflake Snow Snowflakes(哈希)
http://poj.org/problem?id=3349 题意 :分别给你n片雪花的六个角的长度,让你比较一下这n个雪花有没有相同的. 思路:一开始以为把每一个雪花的六个角的长度sort一下,然后 ...
随机推荐
- JS获取url多个参数及解决中文乱码问题
function GetQueryString(name) { var reg = new RegExp("(^|&)"+ name +"=([^&am ...
- equals方法重写
在java中常见的equals方法的重写: 举例:一个自定义类ball如下 public class Ball { private String name; private int weight; p ...
- log4j基础配置使用
添加log4j的jar包:可以从maven处下载:https://mvnrepository.com/artifact/log4j/log4j/1.2.17 <!-- https://mvnre ...
- [fw]Linux 的 time 指令
Linux 的 time 指令 Linux 有個很有意思的 time 指令,可以用來查看另一個指令的執行時間,例如執行 time helloworld 會顯示 helloworld 這支程式的執行 ...
- LeetCode Array Easy 219. Contains Duplicate II
---恢复内容开始--- Description Given an array of integers and an integer k, find out whether there are two ...
- 如何将自己的代码上传至github
前提条件: 有个github账号,电脑安装了git; 首先在自己的账号里新建一个仓库: https://github.com/qiqi105/littleAlbum.git 进入到你要上传的文件夹内部 ...
- linux起源及centos安装
第1章 Linux介绍 1.1 什么是操作系统 是一个人与计算机硬件的中介 Linux:内核+shell+扩展软件 操作系统,英文名称Operating System,简称OS,是计算机系统中必不可 ...
- 如何理解CPU上下文切换(二)
如何理解CPU上下文切换(二) 1.引 你们好,可爱的小伙伴们.^_^ 多个进程竞争CPU就是一个经常被我们忽视的问题. 你们一定很好奇,进程在竞争CPU的时候并没有真正运行,为什么还会导致系统的负载 ...
- go语言从例子开始之Example24.通道同步
我们可以使用通道来同步 Go 协程间的执行状态.这里是一个使用阻塞的接受方式来等待一个 Go 协程的运行结束. Example: package main import "fmt" ...
- 2019 ICPC Universidad Nacional de Colombia Programming Contest C D J
C. Common Subsequence 题意:给出长度为n两个串,求两个串的最长公共子序列len,如果len>=0.99*n,两个串就是亲兄弟否则不是. 解法:朴素的求LCS的时间复杂度是O ...