「LOJ#10042」「一本通 2.1 练习 8」收集雪花 (map

时间:2022-12-13 19:16:19

题目描述

不同的雪花往往有不同的形状。在北方的同学想将雪花收集起来,作为礼物送给在南方的同学们。一共有 n 个时刻,给出每个时刻下落雪花的形状,用不同的整数表示不同的形状。在收集的过程中,同学们不希望有重复的雪花。你可以从任意 a 时刻开始,在 b 时刻停止。a 到 b 时刻中间的雪花也都将被收集。他们希望收集的雪花最多。

输入格式

第一行一个正整数 n;

第 2 行 n 个非负整数表示 n个时刻雪花的形状。

输出格式

最多能收集雪花的数量。

样例

输入样例

5
1 2 3 2 1

输出样例

3

数据范围与提示

对于97 分的数据,1≤n≤106,0≤xi≤108

应用户要求,加入 3 分的数据,1≤n≤106,0≤xi≤109.

题解

首先很糙的思路:维护一左一右两个指针,每次把右指针右移一位,同时把左指针左移到区间内无重复值为止。移的过程中维护长度最大值,记为答案。

然后就要判断某个值是否存在嘛,还要支持把存在的东西抹掉。

感觉这种判定是否存在的东西,map比hash好用INF倍好嘛!!!(超大声

Hash又要考虑冲突,又要挂链......(好像也不是很难写?

map前置技能:

定义:map<type1,type2>mp;

eg:map<int,bool>mp;

修改(插入):mp[x]=y(x为type1,y为type2)

查询是否存在:mp.find(x)!=mp.end()为存在。

删除:mp.erase(pos),其中pos是迭代器。

eg:mp.erase(mp.find(x))。

还害怕自己的map超时来着2333

/*
编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间
#227989 #10042. 「一本通 2.1 练习 8」收集雪花 Accepted 100 5457 ms 6780 KiB C++ / 400 B qwerta 2018-10-14 10:07:37
*/ #include<bits/stdc++.h>
using namespace std;
int x,i,n,l=,a[],b=,r;
map<int,int>mp;
int main()
{
cin>>n;
for(int r=;r<=n;++r)
{
cin>>a[r];
if(mp.find(a[r])!=mp.end())//如果a[r]存在
{
while(a[l]!=a[r])
mp.erase(mp.find(a[l++]));//一直pop到和a[r]相同的点
l++;
}
else mp[a[r]]=;//否则直接打标记
b=max(b,r-l+);
}
cout<<b;
}

「LOJ#10042」「一本通 2.1 练习 8」收集雪花 (map的更多相关文章

  1. &num;10042&period; 「一本通 2&period;1 练习 8」收集雪花 &vert;&vert; 离散化 &vert;&vert; 双指针法 &vert;&vert; C&plus;&plus; &vert;&vert; LOJ

    题目:#10042. 「一本通 2.1 练习 8」收集雪花 看到网上没有这道题的题解,所以写一下. 要标记数字是否存在,看到x<=1e9,所以考虑用离散化,然后开一个last数组,last[i] ...

  2. 「LOJ&num;10051」「一本通 2&period;3 例 3」Nikitosh 和异或(Trie

    题目描述 原题来自:CODECHEF September Challenge 2015 REBXOR 1​​≤r​1​​<l​2​​≤r​2​​≤N,x⨁yx\bigoplus yx⨁y 表示 ...

  3. LOJ&num;10117&period; 「一本通 4&period;1 练习 2」简单题

    LOJ#10117. 「一本通 4.1 练习 2」简单题 题目描述 题目来源:$CQOI 2006$ 有一个$n$个元素的数组,每个元素初始均为$0$.有$m$条指令,要么让其中一段连续序列数字反转— ...

  4. LOJ&num;10064&period; 「一本通 3&period;1 例 1」黑暗城堡

    LOJ#10064. 「一本通 3.1 例 1」黑暗城堡 题目描述 你知道黑暗城堡有$N$个房间,$M$条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设$D_i$为如果 ...

  5. 「LOJ&num;10056」「一本通 2&period;3 练习 5」The XOR-longest Path (Trie

    #10056. 「一本通 2.3 练习 5」The XOR-longest Path 题目描述 原题来自:POJ 3764 给定一棵 nnn 个点的带权树,求树上最长的异或和路径. 输入格式 第一行一 ...

  6. LOJ &num;10131 「一本通 4&period;4 例 2」暗的连锁

    LOJ #10131 「一本通 4.4 例 2」暗的连锁 给一棵 \(n\) 个点的树加上 \(m\) 条非树边 , 现在需要断开一条树边和一条非树边使得图不连通 , 求方案数 . $n \le 10 ...

  7. 「LOJ&num;10043」「一本通 2&period;2 例 1」剪花布条 (KMP

    题目描述 原题来自:HDU 2087 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? 输入格式 输入数据 ...

  8. 「LOJ&num;10015」「一本通 1&period;2 练习 2」扩散(并查集

    题目描述 一个点每过一个单位时间就会向 444 个方向扩散一个距离,如图所示:两个点 a .b 连通,记作 e(a,b),当且仅当 a .b的扩散区域有公共部分.连通块的定义是块内的任意两个点 u.v ...

  9. 【LOJ&num;6066】「2017 山东一轮集训 Day3」第二题(哈希,二分)

    [LOJ#6066]「2017 山东一轮集训 Day3」第二题(哈希,二分) 题面 LOJ 题解 要哈希是很显然的,那么就考虑哈希什么... 要找一个东西可以表示一棵树,所以我们找到了括号序列. 那么 ...

随机推荐

  1. FactoryMethodPattern(工厂方法)

    /** * 工厂方法模式 * 分为四部分 * 1.产品接口 * 2.产品实例 * 3.工厂接口 * 4.工厂实例 * 工厂类最好用单例模式,但在这里主要是说明工厂方法,就不用单例了 * @author ...

  2. javascript、jQuery函数定义和调用方法

    一.javascript 1.var aaa=function(){...} var 方式定义的函数,不能先调用函数,后声明,只能先声明函数,然后调用. 2.function aaa(){...} f ...

  3. CSS命名规则

    头:header  内容:content/container  尾:footer  导航:nav  侧栏:sidebar 栏目:column  页面外围控制整体布局宽度:wrapper  左右中:le ...

  4. ImageLoader&lowbar; &lowbar;Universal-Image-Loader完全解析&lpar;一&rpar;之介绍与使用详解

    转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/50439814 本文出自:[江清清的博客] (一).前言: 已经半个月 ...

  5. dom三个事件

    1,页面加载后 window.onload=function(){}; 2,页面(关闭)卸载后触发 window.onunload=function(){}; 3,页面关闭前触发 window.onb ...

  6. linux内核--几个上下文&lpar;context&rpar;

    为了控制进程的执行,内核必须有能力挂起正在CPU上运行的进程,并恢复以前挂起的某个进程的执行,这种行为叫进程切换(process switch),任务切换(task switch)或上下文切换(con ...

  7. win10系统下如何用命令行的方式打开画图软件

    按 win + r 后输入命令 mspaint  再 回车 即可!如下图所示:

  8. 初学者第二节之HelloWorld

    ava具有简单性.面向对象.分布式.健壮性.安全性.平*立与可移植性.多线程.动态性等特点.Java可以编写桌面应用程序.Web应用程序.分布式系统和嵌入式系统应用程序等. 一.首先创建一个Hell ...

  9. HttpClient&plus;Jsoup模拟登陆贺州学院教务系统,获取学生个人信息

    前言 注:可能学校的教务系统已经做了升级,当前的程序不知道还能不能成功获取信息,加上已经毕业,我的账户已经被注销,试不了,在这里做下思路跟过程的记录. 在我的毕业设计中”基于SSM框架贺州学院校园二手 ...

  10. CF981D Bookshelves

    按位贪心+DP的好题qwq 首先看到题目的要求,统计价值的时候的操作是按位与,就要有按位分别计算的意识 开始没意识到结果想了好久还是看了题解才想到 由于统计价值的方式不是加和,所以可能会出现两个较大的 ...