ACM进阶之STL
NYIST_TC_LYQ
这个作者很懒,什么都没留下…
展开
-
STL map的用法介绍!
map对象的定义 使用前添加map头文件,必须分别指明键和值的类型: mapstring,int>word_count; map的构造函数: mapm; 创建一个名为m的空map对象,其键值类型分别为k和v mapm(m2); 创建m2的副本m, m与m2必须有相同的键值类型 mapm(b,e); 创建map类型的对象,存储迭代器b和e标记的转载 2016-07-25 18:27:41 · 434 阅读 · 0 评论 -
CodeForces GYM 101158D Hidden Anagrams hash+unordered_set
Hidden Anagrams 这个题厉害了,又学到一波黑科技。 题意:给你两个字符串,在两个串中找一个长度最长的子串且字串中字母出现次数都相同,输出最大长度。 思路:hash预处理,然后扔进set里面,然后n2查找。预处理是指将其中一个串的所有字串的hash值预处理出来,用unsigned long long . 注意地方:普通set很容易TLE,原因未知,如果每次都是*base那原创 2017-10-02 17:42:57 · 716 阅读 · 0 评论 -
2016 CCPC Hefei Onsite [HDU 5961、5963、5965、5969]
传递 吐槽一下题意,硬是卡了2个小时,结束才做出来。 题意:给你两个有向图,判断这两个图是否都是传递图。传递图的定义是,对于任意三个不同点,如果能找到a->b>c,而且a->c的边也存在,那么就为传递图。 这样看题意貌似不是很难理解,原题中并没有说明顺序关系,也就是如果不为传递图,那么必须要找到a->b->c,并且a->c不存在才算不传递,要在这三个点存在这样的a->b->c的基原创 2017-10-01 14:48:35 · 445 阅读 · 0 评论 -
ramsey定理 : HDU-5917 Instability、 HDU-6152 Friend-Graph
Instability 题意:给你一副图,求有多少个集合,满足集合中有一个大小至少为3的子集要么构成完全图,要么相互独立。 这道题实话不会,补题发现是一个定理:Ramsey定理 这倒是让我想到了今年ccpc网赛的C题:Friend-Graph 貌似也是这个定理,不过我们当时用bitset过的,现在补题才发现新天地。 来简述那个实用定理吧:任意6个人中都满足存在3个人相互认识或互原创 2017-10-08 20:35:06 · 493 阅读 · 0 评论 -
bitset 位容器集合
bitset bitset容器是一个bit位元素的序列容器,每个元素只占一个bit位,取值为0或1,因而很节省内存空间。它的10个元素只用了两个字节的空间。 头文件:#include bitset类的方法列表:(bitsetb) b.any() : b中是否存在置为1的二进制位? b.none(): b中不存在置为1的二进制位吗? b.count(): b中置为1的二进制位的原创 2017-08-15 19:00:49 · 840 阅读 · 0 评论 -
POJ 2106-Boolean Expressions,双栈运用类似表达式求值!
Boolean Expressions 首先声明此题后台可能极水(毕竟这种数据不好造!)。昨天写了一天却总是找不到bug,讨论区各种数据都过了,甚至怀疑输入有问题,但看到gets也可以过,难道是思路错了? 题意:V表示ture,F表示false,然后有三种位运算符‘!’、‘&’、'|'。其中'!'的优先级最高,‘|’的优先级最低。即优先级关系:! > & > | 。给你一串包含这原创 2017-03-23 09:23:10 · 723 阅读 · 1 评论 -
NYOJ-258/POJ-2559/HDU-1506 Largest Rectangle in a Histogram,最大长方形,dp或者单调队列!
Largest Rectangle in a Histogram 这么经典的题硬是等今天碰到了原题现场懵逼两小时才会去补题。。。废话不多说: 题意:截取一个矩形使其面积最大,随你怎么截,反正面积要最大。输出最大面积,注意爆int。 思路:dp或单调队列。核心思路是从一个小矩形往两边扩散,分别找两边第一个小于这个矩形的位置,其中面积就是这个小矩形与区间长度的乘积,我们预处理出所原创 2017-04-02 22:59:43 · 535 阅读 · 0 评论 -
SPOJ - ADAFIELD ,Set+map,STL不会超时!
ADAFIELD - Ada and Field 这个题,如果用一个字来形容的话:-----------------------------------------------嗯! 题意:n*m的空白矩形坐落在XY轴,Q次操作,每次可以在y轴或x轴的矩形区域内画一条直线,是直线啊。问每次操作后最大的矩形面积多大。 对于思路我只能拍手称赞了,一开始想不到怎么优化,想着用优先队列原创 2017-04-10 23:55:06 · 381 阅读 · 0 评论 -
HDu-2896 病毒侵袭,AC自动机模板题!
病毒侵袭 模板题,不多说了。。 题意:n个不同的字符串分别代表病毒特征,给出m次查询,每次一个字符串(网址),求这个字符串中有几个病毒特征,分别从大到小输出编号,最后输出所有的带病毒网址个数。格式请看样例。 思路:典型AC自动机模板题,建一个Trie树,叶节点赋病毒的编号,然后依次匹配,用set存入编号即可,如果不带病毒不用输出来。这题很容易MLE,动态建树释放内存,所原创 2017-01-12 17:17:57 · 439 阅读 · 0 评论 -
HDU-1251 统计难题,字典树或者map!
统计难题 很久就看过这个题了,但不会~~~不会~~ 题意:给出一张单词表,然后下面有若干查询,每次给出一个单词,问单词表中是否存在以这个单词为前缀的单词,输出数量。本身也是自身的前缀。只有一组数据! 思路:用gets或输入字符都行。如果输入字符可以用map存图,维护每个单词的所有前缀,直接查找就行。要么就用字典树建图,路径每经过一次就加1,如果是新节点直接附原创 2017-01-12 17:07:57 · 433 阅读 · 0 评论 -
POJ-3481 Double Queue,Treap树和set花式水过!
Double Queue 本打算学二叉树,单纯的二叉树感觉也就那几种遍历了, 无意中看到了这个题,然后就花了两天时间又去学了学Treap树,真的不好理解,真应该从基础开始的,但我比较倔强,看到这题一定要先做了再说。上午和某公众号交流了一下,初学,不明白为什么要借助随机优先值来修正,而这题本身自带优先值,为什么不能用这个来修正呢,给出的回答是:为了保证平衡,因为键值生成的BST树有很多种形态原创 2017-01-16 17:24:39 · 762 阅读 · 0 评论 -
POJ-2002 Squares,哈希模板+数学公式!
Squares 题意:二维坐标轴给出n个点求有多少个正方形。 要是平时做比赛的话毫无疑问会想到用二分去写这道题,但毕竟出现在hash专题里,所以自然用hash去攻克,但是完全没有思路,于是,,网上找了题解,让我感叹的是我们做hash的题怎么知道用哪种hash函数呢。。这道题以坐标平方和再对hash数组大小取余,这样离散化感觉有点钻数据空子,但hash是有处理冲突的能力的,存在冲原创 2017-01-15 08:15:37 · 432 阅读 · 0 评论 -
set/multiset用法详解
集合 使用set或multiset之前,必须加入头文件 Set、multiset都是集合类,差别在与set中不允许有重复元素,multiset中允许有重复元素。 sets和multiset内部以平衡二叉树实现 1. 常用函数 1) 构造函数和析构函数 set c:创建空集合,不包含任何元素 se转载 2016-10-13 19:23:21 · 439 阅读 · 0 评论 -
NYOJ-1188并集与交集,STL的灵活运用!
并集与交集 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 给你两个字符串的集合A和B,让你求这两个字符串集合的并集和交集,按字典序排序后输出。 然后又给出给出两个字符串s1和s2,然后让你依次输出在并集中满足(s1 输入多组输入 每组首先两个集合A和B,各占一行,其中包括大小写字母及标点符号。(集合中字符串个数不超过原创 2016-08-23 17:17:38 · 932 阅读 · 0 评论 -
c++中的string常用函数用法总结!
标准c++中string类函数介绍 注意不是CString 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据原创 2016-07-31 18:44:37 · 615 阅读 · 0 评论 -
C++ stringstream的用法
Created at stringstream的用法 使用stringstream对象简化类型转换 C++标准库中的提供了比ANSI C的更高级的一些功能,即单纯性、类型安全和可扩展性。在本文中,我将展示怎样使用这些库来实现安全和自动的类型转换。 为什么要学习 如果你已习惯了风格的转换,也许你首先会问:为什么要花额外的精力来学习基于的类型 转换呢?也许对下面转载 2016-07-22 16:03:14 · 481 阅读 · 0 评论 -
STL vector用法介绍
STL 之 vector 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。 Vector总览 vector是C+转载 2016-07-22 10:48:23 · 296 阅读 · 0 评论 -
CodeForces 858C Did you mean... 、 CodeForces 858D Polycarp's phone book!黑科技
C. Did you mean... 题意:将一个字符串最少分成几个小的字符串,使得每个字符串都没有连续三个及以上的辅音字母,连续三个相同的辅音字母不算。 贪心构造即可,注意连续三个相同的辅音的时候将标记减一即可,不能赋为1。 case: yyyr yyy rchar s[N]; bool ok(char c) { if(c=='a'||c=='e'||c=='i'||c原创 2017-10-11 21:35:54 · 550 阅读 · 0 评论