STL
文章平均质量分 82
01的世界
有时,失去了才懂得珍惜
展开
-
例题6-4 破损的键盘 UVa 11988
题意:字符'['表示句首,就是光标移到了句首,’】‘表示句尾 分析:这题看到有人用双端队列,把[加入队首,】加入队尾,再按照队列中的顺序输出 #include #include #include #include #include using namespace std; char str[100010]; int main(){ // freopen("f.txt","r",原创 2015-09-16 08:58:26 · 739 阅读 · 0 评论 -
C++中map的排序问题
map是用来存放键值对的数据结构,可以很方便快速的根据key查到相应的value。假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择。 我们这样定义,map,其中学生姓名用string类型,作为Key;该学生的成绩用int类型,作为value。这样一来,我们可以根据学生姓名快速的查找到他的成绩。 但是,我们除了希望能够查询某个学转载 2015-11-10 19:59:01 · 626 阅读 · 0 评论 -
C++标准库中的list的实现原理
在C++中采用了大量的标志模板库(STL)实现程序的设计,这种设计方式使得不同类型的对象都能通用,而不再是C语言中的通常对于不同的类型需要重新设计或者或者比较采用间接的指针操作。C++中的这种方式简化了写代码的复杂度,但是增加了编译器的复杂度和难度。 在数据结构中链表是比较基本的类型,在C++中链表是基于模板的类,因此在实际的使用过程中需要涉及到实际的类型。 点击(此处)折叠或打转载 2015-11-10 17:57:36 · 6379 阅读 · 0 评论 -
STL 之 stack&queue&priority_queue 栈,队列与优先队列
栈,队列与优先队列都属于容器适配器即包转了现有的STL容器类的模板类,提供了一个不同的,通常更有限制性的功能,以下部分是对三个特殊的数据结构的用法总结 一。 stack 模板类的定义在头文件中。所谓栈,就是符合后进先出的数据结构。 stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型为deque。 定义stac原创 2015-09-14 12:49:10 · 551 阅读 · 0 评论 -
STL map的用法
map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有转载 2015-11-12 23:58:12 · 306 阅读 · 0 评论 -
例题6-2 铁轨(栈)
UVA - 514 Rails Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu Submit Status Description There is a famous railway station in PopPush Ci原创 2015-05-13 23:47:13 · 514 阅读 · 0 评论 -
例题6-3 矩阵连乘(栈)UVa 442
UVA - 442 Matrix Chain Multiplication Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %lluSubmit Status Description Suppose you have原创 2015-05-13 22:14:03 · 426 阅读 · 0 评论 -
Codeforces 527C 线段树 /set
题目:http://codeforces.com/problemset/problem/527/C 题意: 给出矩形的长和高,然后给出一些操作,水平或者竖直切割矩形,每切割一次,求出剩下的面积最大的矩形 分析: 看到题目,就想到是如何维护区间的最大值,第一想到的就是线段树,可以把还可以划线点的用1表示,划了线的用0表示,然后求最大长度就是如何求连续的1的最大个数,那么这题的变成了一原创 2016-03-05 22:52:45 · 405 阅读 · 0 评论 -
Bestcoder #74 hdu 5635 hdu 5636 hdu 5637 hdu 5638
hdu 5635 题意: Peter有一个字符串s=s1s2...sns=s_{1}s_{2}...s_{n}令suffi=sisi+1...snn是ss第ii字符开头的后缀. Peter知道任意两个相邻的后缀的最长公共前缀ai=lcp(suffi,suffi+1)(1≤in). 现在给你数组aaa, Peter有多少个仅包含小写字母的字符串满足这个数组. 答案原创 2016-03-06 15:56:07 · 546 阅读 · 0 评论 -
例题8-8 防线 UVa1471
题目:给一个长度为N的序列,删除一个连续子序列,使得剩下的一个连续递增子序列最长。 分析:f(i)表示以第i个元素为起始的最长序列,g(j)表示以第j个元素为结尾的最长序列,那么就去找 满足 a[j] #include #include #include #include #include #include #include using namespace std; const int max原创 2015-10-09 22:10:44 · 356 阅读 · 0 评论 -
习题 6-1 平衡的括号 UVa 673
题意:一个字符串,包含空行,(,),[ ]判断括号是否合法 分析:栈操作,如果是[,(,则入栈,如果)],则判断是否栈顶( ]相搭配。具体看代码 #include #include #include #include #include #include using namespace std; int main() { int T; char c; string s原创 2015-09-30 16:49:24 · 411 阅读 · 0 评论 -
例题6-1 并行程序模拟 UVa210 双端队列
concurrency simulator Programs executed concurrently on a uniprocessor system appear to be executed at the same time, but in reality the single CPU alternates between the programs, executing so原创 2015-09-15 19:48:23 · 5404 阅读 · 3 评论 -
例题 8-2 和为0的4个值 UVa 1152
分析:现将集合AB中的元素求和保存起来,再将CD中的元素求和保存起来,然后再枚举看看两数组中是否存在相反数,在分别计算就可以了。按照书上说的分别将和保存在有序数组和map中,map果然超时了。 有序数组2379ms #include #include #include #include #include #include using namespace std; const int max原创 2015-10-06 00:18:11 · 328 阅读 · 0 评论 -
2015 ACM/ICPC Asia Regional Changchun Online hdu 5438
题目:hdu 5438 Ponds Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 76 Accepted Submission(s): 28 Problem Description Betty owns原创 2015-09-13 23:01:20 · 312 阅读 · 0 评论 -
STL之list的用法
list封装了链表,所以list,每次访问可以很快的支持插入和删除操作,但是不适合随机访问,如果查找某个元素也是从头遍历,速度较慢 assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素 empty() 如果list是空的则返回true end() 返回末尾的迭代器 erase() 删原创 2015-09-06 16:32:28 · 325 阅读 · 0 评论 -
hdu 5437 2015 ACM/ICPC Asia Regional Changchun Online 1002 优先队列
Alisha’s Party Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 1262 Accepted Submission(s): 356 Problem Description Princess Alish原创 2015-09-14 17:31:39 · 95 阅读 · 0 评论 -
c++ list, vector, map, set 区别与用法比较
List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。 Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多了,不需要拷贝和移动数据,只需要转载 2015-09-04 12:27:25 · 572 阅读 · 0 评论 -
STL 之 deque的用法
deque双端队列,及支持vector的随机访问[],也支持list的前后两端插入删除,功能很强大,现总结一下其主要用法 deque与vector很类似,vector的函数操作好像deque都支持,而且也支持pop_front和push_front,但是占用内存较多 支持dequea[100],操作 主要操作函数: (1) 构造函数 deque():创建一个空deque原创 2015-09-15 12:45:18 · 361 阅读 · 0 评论 -
STL之 set的用法
Map,Set属于标准关联容器,使用了非常高效的平衡检索二叉树:红黑树,他的插入删除效率比其他序列容器高是因为不需要做内存拷贝和内存移动,而直接替换指向节点的指针即可,所以两者之间的一些用法是类似的。 set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值;另外原创 2015-09-04 17:14:16 · 524 阅读 · 0 评论 -
hdu 1075 翻译火星文 trie树 / map
题目:点击打开链接 题意:给你一段火星文对应的英文,再给你几句火星话,让你翻译成英文。 分析:先把火星文建成一颗字典树,在翻译的时候,查找每个单词块,看是否这个串在字典树中能否找到,因为在建树的时候id存储了对应单词的英文,所以查找的时候返回id就可以,找不到就返回-1. 对于这题,如果简单的做做,可以用map,很简单。 #include #include #include using原创 2016-02-28 13:59:18 · 391 阅读 · 0 评论