STL
kalilili
双眼闭三年。
展开
-
lower_bound()和upper_bound()(有删改)
函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置举例如下:一个数组number序列为:4,10,11,30,69,70,96,100.设要插入数字3,9,111.pos为要插入的位置的下标则pos = lower_bound( number, n转载 2015-01-27 12:08:53 · 644 阅读 · 0 评论 -
Codeforces Round #337 (Div. 2) E. Alphabet Permutations (线段树lazy 或 set)
大致题意:一个2e5的字符串STR,最多包含K个字符(K 1. 把字符串[L, R]的字符修改成x2. 给一个K个字符的某个排列s,询问最少重复次数的s连接而成的长串的子序列包含STR思路1:因为要修改STR,所以要对STR进行处理,然后要在logn以下的复杂度完成查询操作。可以注意到最少重复的次数就是STR中相邻的两个字符(ch1, ch2) 在排列s中的位置是ch2在c原创 2015-12-29 00:24:11 · 645 阅读 · 0 评论 -
Codeforces Round #295 (Div. 1) B. Cubes(最大最小堆+拓扑模拟)
B. Cubestime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputOnce Vasya and Petya assembled a figure of m cubes原创 2015-08-09 23:26:37 · 1007 阅读 · 0 评论 -
Codeforces Round #296 (Div. 2) C - Glass Carving(STL运用)
C. Glass Carvingtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputLeonid wants to become a glass carver (the原创 2015-03-18 18:17:00 · 848 阅读 · 0 评论 -
【转】STL map
一.Map概述 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的原创 2014-12-23 23:47:40 · 630 阅读 · 0 评论 -
堆--神奇的优先队列
由于完全二叉树父亲与儿子之间的规律可以只用一个数组就可以储存一棵完全二叉树堆的一些基本操作(以最小堆为例)1.添加元素将新元素插入到末尾,再向上调整直到满足堆的特性为止。如果堆的大小为N,那么插入一个新元素所需要的时间是O(logN)(以最小堆为例)向插入+上调整代码如下:void heap_insert(int num){ h[++n]=num; siftu原创 2015-01-17 11:38:59 · 586 阅读 · 0 评论 -
c++ list容器
list容器就是一个双向链表,可以高效地进行插入删除元素。构造函数 list c0; //空链表 list c1(3); //建一个含三个默认值是0的元素的链表 list c2(5,2); //建一个含五个元素的链表,值都是2 list c4(c2); //建一个c2的copy链表 list c5(c1.begin(),c1.end原创 2015-01-02 22:07:26 · 569 阅读 · 0 评论 -
STL 优先队列基础用法
基本操作:empty() 如果队列为空返回真pop() 删除对顶元素push() 加入一个元素size() 返回优先队列中拥有的元素个数top() 返回优先队列对顶元素在默认的优先队列中,优先级高的先出队。在默认的int型中先出队的为较大的数。使用方法:头文件:#include 有两种声明方式:普通方法和结构体方法,将在下面代码处解释:下面代码列出了转载 2014-12-28 10:02:19 · 626 阅读 · 0 评论 -
UVAOJ 12096 The SetStack Computer(STL的运用)
12096 The SetStack ComputerBackground from Wikipedia: Set theory is a branch ofmathematics created principally by the German mathe-matician Georg Cantor at the end of the 19th century.Initially原创 2015-02-02 18:22:39 · 749 阅读 · 0 评论 -
string 简明教程
创建 string 对象字符串的操作,需要先用 string 类型的构造函数,构造出一个 string 对象,为随后添加的字符分配内存,并初始化 string 对象的内部变量。如下是它的几个常用的构造函数原型。1. string() 默认的构造函数,用于创建一个不包含任何非空字符的 string 对象。 例如,下面一行代码创建空的 string 对象 s .转载 2014-12-25 10:24:23 · 892 阅读 · 0 评论 -
集合set
常用:begin() ,返回set容器的第一个元素end() ,返回set容器的最后一个元素clear() ,删除set容器中的所有的元素empty() ,判断set容器是否为空max_size() ,返回set容器可能包含的元素最大个数size() ,返回当前set容器中的元素个数原创 2014-12-19 16:04:38 · 711 阅读 · 0 评论 -
C++ string类
C++ string 用法详解1 string 使用其实,string并不是一个单独的容器,只是basic_string 模板类的一个typedef 而已,相对应的还有wstring, 你在string 头文件中你会发现下面的代码:extern "C++" {typedef basic_string string;typedef basic_string w转载 2014-12-23 20:21:58 · 625 阅读 · 0 评论 -
不定长数组:vector
使用需要包含头文件 #include vector是一个模板类,所以需要用vector a或者vector b这种方式声明。vector的常用操作:int len = a.size();//返回vector长度 a.resize(100);//把a长度变为100 a.push_back(10)//把10添加到尾部 a.pop_back();//删除最后一个元素原创 2014-12-19 16:37:44 · 2056 阅读 · 1 评论 -
STL 算法vector/set集合-交集,并集,差集,对称差
针对这里提及的四个集合运算必须特别注意: 1、第一个算法需保证第一集合和第二集合有序,并从小到大排序,内部使用默认“2、第二个算法需保证第一集合和第二集合有序,排序方式参照Compare确定,内部使用Compare比较元素大小。1 -- set_intersection(交集)template OutputIterator set_intersection(InputIter原创 2014-12-26 21:13:02 · 22400 阅读 · 1 评论 -
stringstream的基本用法
stringstream是字符串流。它将流与存储在内存中的string对象绑定起来。在多种数据类型之间实现自动格式化。1 stringstream对象的使用#include#includeusing namespace std;int main(){ string line,word; while(getline(cin,line))原创 2014-12-24 00:37:32 · 1141 阅读 · 0 评论 -
C++ int与string的转化
int本身也要用一串字符表示,前后没有双引号,告诉编译器把它当作一个数解释。缺省情况下,是当成10进制(dec)来解释,如果想用8进制,16进制,怎么办?加上前缀,告诉编译器按照不同进制去解释。8进制(oct)---前缀加0,16进制(hex)---前缀加0x或者0X。string前后加上双引号,告诉编译器把它当成一串字符来解释。注意:对于字符,需要区分字符和字符表示的数值。比如:转载 2015-01-11 10:26:41 · 578 阅读 · 0 评论 -
数组左旋转k位 std::rotate() POJ 1978
题意:模拟一个洗牌操作。先输入两个正整数N和R,N表示有N张牌,R表示有R次操作。然后再是有R行,每行有两个正整数p和c,表示从p开始数起c张要放到牌顶。现在问你:经过R次操作后,这N张牌的首张牌是什么数字?注意:牌的数字是倒着排列的。样例解释1:5 2 //5张牌 2次洗牌 当前序列:5 4 3 2 13 1//从第三张牌数起 到 第四张牌 要放到牌顶。(注意:这里有一个数字放到原创 2016-03-27 13:03:51 · 890 阅读 · 0 评论