1280 前缀后缀集合(map)
- 第1行:一个数N, 表示数组的长度(1 <= N <= 50000)。
- 第2 - N + 1行:每行1个数,对应数组中的元素Ai。(1 <= Ai <= 10^9)
- 输出符合条件的集合数量。
- 6
- 3
- 5
- 7
- 3
- 3
- 5
- 14
- //似乎简单的贪心就能做,或者说叫枚举,枚举顺序的所有区间
分情况讨论清楚,
1、当顺序是一个已出现的值,累加相同区间个数即可
2、当出现一个新值,map记录一下,不同的值的个数++,然后扩充后缀区间,直到出现新值,或者不同的值个数为0,就可以累加答案了
这样,时间复杂度是 O(n*lgn)
- #include <bits/stdc++.h>
- using namespace std;
- #define INF 0x3f3f3f3f
- #define eps 1e-9
- #define LL long long
- #define MX 50005
- int n;
- int dat[MX];
- LL ans;
- void func()
- {
- int R = n, dif = , res = ;
- map<int,int> mp;
- for (int i=;i<=n;i++)
- {
- if (mp.count(dat[i])) //如果是重复的,加上个数即可
- {
- ans += res;
- continue;
- }
- mp[dat[i]]=; dif++;
- res=;
- while (R>=&&mp.count(dat[R]))
- {
- if (mp[dat[R]]==)
- {
- mp[dat[R]]=;
- dif--;
- }
- if (dif==)
- {
- ans++;
- res++;
- }
- R--;
- }
- }
- }
- int main()
- {
- while(scanf("%d",&n)!=EOF)
- {
- for (int i=;i<=n;i++)
- scanf("%d",&dat[i]);
- ans = ;
- func();
- printf("%lld\n",ans);
- }
- return ;
- }
1280 前缀后缀集合(map)的更多相关文章
- kuangbin专题七 HDU1540 Tunnel Warfare (前缀后缀线段树)
During the War of Resistance Against Japan, tunnel warfare was carried out extensively in the vast a ...
- POJ 2752 (KMP 所有可能长度的前缀后缀) Seek the Name, Seek the Fame
题意: 求一个字符串的相同前缀后缀的所有可能的长度,这里该字符串其本身也算自己的前缀和后缀. 分析: 我们知道next数组的性质是,该字符之前的字符串的最大相同前缀后缀. 既然知道了最大的,即next ...
- Java集合Map接口与Map.Entry学习
Java集合Map接口与Map.Entry学习 Map接口不是Collection接口的继承.Map接口用于维护键/值对(key/value pairs).该接口描述了从不重复的键到值的映射. (1) ...
- (10)集合之双列集合Map,HashMap,TreeMap
Map中的元素是两个对象,一个对象作为键,一个对象作为值.键不可以重复,但是值可以重复. 看顶层共性方法找子类特有对象. Map与Collection在集合框架中属并列存在 Map存储的是键值对 Ma ...
- 【由浅入深理解java集合】(五)——集合 Map
前面已经介绍完了Collection接口下的集合实现类,今天我们来介绍Map接口下的两个重要的集合实现类HashMap,TreeMap.关于Map的一些通用介绍,可以参考第一篇文章.由于Map与Lis ...
- (7)Java数据结构--集合map,set,list详解
MAP,SET,LIST,等JAVA中集合解析(了解) - clam_clam的专栏 - CSDN博---有颜色, http://blog.csdn.net/clam_clam/article/det ...
- 双列集合Map
1.双列集合Map,就是存储key-value的键值对. 2.hashMap中键必须唯一,值可以不唯一. 3.主要方法:put添加数据 getKey---通过key获取数据 keySet- ...
- 12:集合map、工具类
一.map集合 Map:一次添加一对元素.Collection 一次添加一个元素. Map也称为双列集合,Collection集合称为单列集合. 其实map集合中存储的就是键值对(结婚证书), map ...
- hdoj 2594 Simpsons’ Hidden Talents 【KMP】【求串的最长公共前缀后缀】
Simpsons' Hidden Talents Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
随机推荐
- 小米6安装google play
http://bbs.xiaomi.cn/t-13579116 http://m.mk52.cn/jiaocheng/3288.html 步骤: 1.下载需要的文件并解压 (http://techta ...
- 04-常见内存错误以及valgrind使用
04-常见内存错误以及valgrind使用 代码段: 仅仅读数据,因此对这一部分的数据.试图写仅仅读数据,这个在编译的时候基本上能够检測. 数据段/BSS段: 未初始化直接訪问,即使没有显示初始化,仍 ...
- 配置 mybatis的 log4j.properties
log4j.rootLogger=debug,stdout,logfile ### 把日志信息输出到控制台 ### log4j.appender.stdout=org.apache.log4j.Con ...
- ubuntu挂载3T新硬盘并更换home分区
ubuntu添加一块新的硬盘,并更换home分区 1.将硬盘接入机箱,开机,查看是否现有的硬盘信息 从这里可以看出,共有两块硬盘,分别是sda和sdb 2.执行fdisk -l,确保我们要添加的就是s ...
- Photoshop | 快速抠头发(调整边缘/选择并遮住)
———————————————————————————————————————————— Photoshop快速抠头发(CS6中调整边缘功能,CC2017中更名为选择并遮住) - - - - - - ...
- iOS开发之实现半透明蒙层背景效果[用于下拉菜单页和分享页]
郝萌主倾心贡献.尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助.欢迎给作者捐赠.支持郝萌主,捐赠数额任意.重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下 ...
- Android设置拍照或者上传本地图片
效果例如以下: 看代码: MainActivity类中: package com.example.ceshidemo; import java.io.ByteArrayOutputStream; im ...
- 【MyBatis学习07】动态sql
1. 动态sql 动态sql是mybatis中的一个核心,什么是动态sql?动态sql即对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装.就拿上一篇博文中对用户的综合查询一例来 ...
- 你应该将应用迁移到Spring 4的五个原因
本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/12/five-reasons-to-migrate-spring4 Rafa ...
- hive 用户订单行为 基础操作
今天用hive查询用户日志表.这是日志表的格式: user_id,item_id,cat_id,merchant_id,brand_id,month,day,action,age_range,gend ...