收集雪花

【hash表】收集雪花

允我心安 提交于 2019-11-26 21:08:47
【哈希和哈希表】收集雪花 题目描述 不同的雪花往往有不同的形状。在北方的同学想将雪花收集起来,作为礼物送给在南方的同学们。一共有n个时刻,给出每个时刻下落雪花的形状,用不同的整数表示不同的形状。在收集的过程中,同学们不希望有重复的雪花。你可以从任意a时刻开始,在b时刻停止。a到b时刻中间的雪花也都将被收集。他们希望收集的雪花最多。 输入 第一行一个正整数n;第2行到第n+1行表示n个时刻雪花的形状。 输出 最多能收集雪花的数量。 样例输入 5 1 2 3 2 1 样例输出 3 提示 n≤1e6,xi≤1e9 【题解】 这个题目其实用的是一种的hash方式,其实就是我们常用的离散化操作。 1、另外一个数组存放相同数据,然后进行排序。 2、因为大小相同可以看成一个数,所以相同的话,可以用lower_bound来写,因为是大于等于某个数,等于可以看成对应的大小关系。 3、然后进行双指针方法来跑最大区间的不同种类的个数。 【代码】 1 #include<cstdio> 2 #include<bitset> 3 #include<iostream> 4 #include<algorithm> 5 using namespace std; 6 typedef unsigned long long ULL ; 7 const int N = 1e6+10; 8 const int M = 5e6