STL应用
文章平均质量分 58
凉秋girl
保持学习应该是最难的一件事吧?
展开
-
不定长数组vector
vector就是一个不定长数组。不仅如此,它把一些常用操作“封装”在了vector类型内部。 例如,若a是一个vector,可以用a.size( )读取它的大小,a.resize( )改变大小,a.push_back( )向 尾部添加元素,a.pop_back( )删除最后一个元素。 vector是一个模板类,所以需要用vectora或者vectorb这样的方式来声明一 个vector。V原创 2016-11-09 10:14:55 · 2096 阅读 · 0 评论 -
二叉查找树<链表实现>
thinking:第一个结点作为根结点,然后接下来每个结点与根结点对比,如大于根结点则放右边,小于根结点则放左边,然后比较下一个结点,知道遇到空节点则储存、 输入样例: 9 6 3 8 5 2 9 4 7 10 输出样例:(前序遍历) 6 3 2 5 4 8 7 9 10 代码: #include #include using namespace std; struct t原创 2016-12-19 09:22:43 · 269 阅读 · 0 评论 -
ZOJ 2334 可并堆<斜堆>
thinking:1、可以为大根堆或者小根堆,相当于优先队列,但是有合并这个功能 关键代码是 int merge(int x,int y){ if(tree[x].weight==0)return y; if(tree[y].weight==0)return x; if(tree[x].weight tree[x].rch=merge(tree[x].rch,y); swap(x,y原创 2016-12-25 18:15:00 · 312 阅读 · 0 评论 -
FBI树<链表构造二叉树+后序输出>
the reason of failure:1、将一个字符串从i到len分成两份的时候,若为偶数,注意第二份的开头是len/2+1 题意:给一串01码,把01码分割成左右两份,左结点放左份,右结点放右份,然后判断这份结点包括有"0"和"1"则为F结点, 如果只包含"0"则为B结点,只包含"1"则为I结点。 代码: #include #include #include using nam原创 2016-12-19 14:33:02 · 287 阅读 · 0 评论 -
顺序二叉树链表实现<模版>
花了一整天的时间琢磨,算是明白一点指针的使用了 输入样例: 21 20 10 30 5 15 25 35 3 6 11 28 2 7 27 29 8 9 40 33 34 26 这是一个二叉顺序树用链表实现,然后添加与删除根据函数来。 代码: #include #include using namespace std; struct tree{ int data; tree原创 2016-12-19 23:00:17 · 348 阅读 · 0 评论 -
二维树状数组
不用++的话一直超时,也不知道为什么~没找出问题 As the name says, this problem is about finding the number of points in a rectangle whose sides are parallel to axis. All the points and rectangles consist of 2D Cartesia原创 2017-01-26 20:50:46 · 181 阅读 · 0 评论 -
POJ 1611 <并查集>
thinking:把所有在一个组的学生连到一棵树(注意如果一组多人如5人是如何输入到一棵树上),然后判断多少个结点的根结点与0的根结点相同,最后输出总数+1. Description Severe acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, was recognized a原创 2016-12-06 19:26:50 · 184 阅读 · 0 评论 -
CodeForces 471D<差分+KMP>--scanf的读入远比cin快
thinking:用在数据庞大时scanf的读入速度远远比cin快速,这里就快了十倍. 题意: Description Polar bears Menshykov and Uslada from the zoo of St. Petersburg and elephant Horace from the zoo of Kiev got hold of lots of wood原创 2016-12-04 22:31:40 · 304 阅读 · 0 评论 -
set容器的set_unition(并集),set_intersection(交集),set_difference(差集)
set_unition(并集),set_intersection(交集),set_difference(差集) 3 个函数的写法 set_??(a.begin(),a.end(),b.begin(),b.end(),inserter(x,x.begin()); #include #include #include #include using namespace std; int ma原创 2016-11-09 20:33:16 · 6027 阅读 · 3 评论 -
CCCC天梯赛准备开打
暴力出奇迹!原创 2018-02-28 18:40:31 · 471 阅读 · 0 评论 -
插头DP~(。。。了解了一下下)
黄大佬发了一手插头dp的资料,没学过(菜呀,这玩意好难入门的,结合了2篇资料才看懂,然而入门那题没a,a了更简单的一道(emmmmmmmm),太菜了、 orz这两位聚聚:入门题详解+代码https://blog.csdn.net/litble/article/details/79369147 远古cdq聚聚的论文https://wenku.baidu.com/view/9cfbb16e011c...原创 2018-10-07 19:46:06 · 2296 阅读 · 1 评论 -
2018年模板大集合!!!!没有一个优秀的模板就是等着被摩擦[各种用法]
fgets的使用方法: fgets(s1,sizeof(s1),stdin) c++11中类似hash_map,解决冲突问题,当做比较快的map来用 #include<ext/pb_ds/assoc_container.hpp> #include<ext/pb_ds/hash_policy.hpp> using namespace std; using name...原创 2018-09-30 17:36:17 · 298 阅读 · 0 评论 -
bitsets
foo.size() 返回大小(位数)foo.count() 返回1的个数foo.any() 返回是否有1foo.none() 返回是否没有1foo.set() 全都变成1foo.set(p) 将第p + 1位变成1foo.set(p, x) 将第p + 1位变成xfoo.reset() 全都变成0foo.reset(p) 将第p + 1位变成0foo.flip() 全都取反foo.flip(p)...原创 2018-10-10 10:29:23 · 302 阅读 · 0 评论 -
构造表达式(西电上机题)
本机环境win10+gcc-5.4 先给出这道题的简化做法,假如只有'+'、'-'这两种操作,显然这道题简单了许多。 我们可以通过枚举数字与数字之间的总共n-1个符号,假设n为5,就是枚举符号0000、0001、0010、0011、0100、0101。。。1111,1111对于二进制来表示就是数字(2^(n-1))-1 对于确定了的符号可以直接得出运算结果。 复杂度为(2^n)*(n) ...原创 2018-10-22 23:33:17 · 1070 阅读 · 0 评论 -
HDU 1166 数据结构-<线段树>
thinking:做线段树,然后这个线段树里的结点为这个线段的总值。 the reason of reason:1、大数据又用cin,太慢了!!应该用的scanf 2、数组开得不够大,运行失败 题意: 给一个N,然后N个数,表示各个点的值,然后增加、减少、一个点中的值,查找一个线段中的值。 代码: #include #include using namespace std; str原创 2016-12-23 22:35:06 · 270 阅读 · 0 评论 -
最优二叉树<哈夫曼树>
thinking:找到2个最小值的点,将其的值加起来成一个新结点的值,然后这个新结点是这两个结点的父节点,然后再在这些结点(父结点)中选择2个接着连成一个父结点,依次循环就可以构造出一个哈夫曼树了。 the reason of failure:1、(AA&&BB||CC)与(AA&&(BB||CC))意义是不一样的。 2、得写一个walked来记录哪个结点已经被选择过了而不能再次被选择。 代原创 2016-12-23 20:34:02 · 597 阅读 · 0 评论 -
Uva101 木块问题
模拟动作问题 分析题意 通过cout 然后判断st1与st2各怎么执行 运用vector这个不定长数组来表示位置与位置上所有的木块 #include #include #include #include using namespace std; const int maxn=30; vectorpile[maxn]; //每个a[]都是一个vector,一个原创 2016-11-09 13:37:48 · 459 阅读 · 0 评论 -
函数tolower().isalpha()
tolower是一种函数,功能把字符转换成小写字母,非字母字符不做出处理。 s[I]=ABCsad; s[i] = tolower(s[i]) 将大写转换为小写 使用例子: #include #include using namespace std; int main(){ string a; cin >> a; for(int i=0;i<a.size();原创 2016-11-09 15:06:39 · 443 阅读 · 0 评论 -
容器set的使用
sets,为定义s为set的一个实例化 #include 为头文件 s.insert()为插入 *s.begin()为判断第一个数 s.count(5)为判断值为5的数是否出现过 s.erase(6)为删除掉值为6的结点 #include #include //set元素都是从小到大排列好的 using namespace std; int main()原创 2016-11-09 16:02:58 · 334 阅读 · 0 评论 -
链表<list>的增删查等操作
list的简单使用, lista1; a1.insert(a1.begin(),6)//向开头添入6 a1.insert(a1.end(),5)//向结尾添入5 a1.pop_fron()t or a1.pop_back() a1.reverse() //意为反转链表 a1.earse() or a1.remove() #include #include using原创 2016-11-10 11:01:58 · 276 阅读 · 0 评论 -
多源最短路径+源码<floyed>
the reason of failure:1、第一次的时候,给输入input的i 2、第二次是由于输入的少一个%d。 how to solve:修改 question: where is difficult:基础 key point:把每个边都初始化为-1,然后把所有题目给的能走的边储存。通过三层循环,找出到达某个结点的最短路径,没找到一个就代替之前的路径。 即本来输入的是 1原创 2016-11-16 15:01:01 · 291 阅读 · 0 评论 -
单源最短路径<Dijkstra>
由一个源头,也就是n1开始到n2。 f[?]代表从终点到?的距离,刚开始f[n2]就是确定了终点,然后每个f[?]为距离 需要弄明白map的判断那里 #include #include #define maxn 9999 using namespace std; int main(){ freopen("in.txt","r",stdin); freopen("out.txt","w原创 2016-11-16 23:37:43 · 354 阅读 · 0 评论 -
HDU 1233 <最小生成树prim><稠密图><可做模版>
the reason of failure:1、阶层不会算,用循环写的,最后超时。N!=N*(N-1)/2 thinkin:模板题 题意: 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 41687原创 2016-12-09 11:13:17 · 334 阅读 · 0 评论 -
最小生成树<prim>
1、刚开始把从点1到每个能连同的点赋值给lowcost[?],然后用mst[1]储存是从1连接过去的。 2、然后找出这些lowcost的最小值,然后连接第一条边。 3、通过mst[[知道这条边是从1连接过去的,然后找这条边的另一个点,从这个点开始用map[][]找出其连的边中(如到5)是否比1到5小, 如果比1到5小,则替换lowcost[],mst,储存这个点. 4、然后再找一次最小的l原创 2016-11-19 15:45:31 · 190 阅读 · 0 评论 -
单源最短路径<队列><可以返回再找>
通过队列的方式。 求10-1的距离 先把到1的距离变为0 然后一个个找离1近的点 f[2]=14 f[3]=2 f[4]=1 然后找分别离他们近的点 f[5]=f[2]+1 f[6]=f[2]+3 f[6]之前的f[6]小 则 f[6]=f[3]+3 f[10]=f[4]+89 然后从被新添加的开始 f[5] f[6] f[10]开始 然后从6到2发现 更小 那么f[2]更新原创 2016-11-18 17:02:42 · 206 阅读 · 0 评论 -
milk2<uscao>1.2-<涉及指针是qsort的使用>
the reason of failure:1、刚开始没看清题意,找的是最大一次性的连续挤奶时间和连续没人挤奶时间. data:一遍过. thinking:定义一个结构体,里面有挤奶时间start与end,然后通过快排start.然后从第一个时间段的end开始与下个时间段的start对比,如果end>下个start,则为连续的,然后判断这2个数据的end哪个大,取得最大值的为end,然后将最开原创 2016-11-22 22:45:07 · 259 阅读 · 0 评论 -
HDU1232 并查集<并>
thinking:把每个结点初始化其就为根结点,然后一次性输入2个数到mix(a,b)函数,判断其是否属于同一个根结点,如果是同一个根结点什么都不发生,如果不是同一个结点,则把b结点加入到a所在的树,然后通过给每一个结点的根结点一个标记1,最后计算被标记的结点总数,那么这个总数就是树的总量。 畅通工程 Time Limit: 4000/2000 MS (Java/Others) Me原创 2016-12-06 18:14:13 · 206 阅读 · 0 评论 -
N皇后问题<DFS>
每个皇后不能在同一行,列,斜线 thinking:深搜,做标记判断是否能走,能走则走再找下一行的每一列看哪一列能走 代码: #include using namespace std; bool map1[500][500]; int n; void print(){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) cout << map原创 2016-12-07 12:50:52 · 261 阅读 · 0 评论 -
预算 NOIP 取舍问题<枚举>
the reason of failure:还是i,J没弄清楚.必须把代码中每个字母的含义看清楚. thinking:通过把所有买的可能性枚举,如果是附件拿出,则直接拿出.如果是主件,则写一个循环,把其的附件也全部拿出. 预算 【问题描述】预算(budget.cpp/c/pas) NOIP 2006 张琪曼等人要为太空战指挥中心购置设备,魔法学院的院长昨天说:“指挥中心需要购买哪些原创 2016-11-24 19:36:29 · 391 阅读 · 0 评论 -
简单组合
求在N个数中取M个数,有几种取法. 如1 3 5 9 7 C(5,3)=C(4,3)+C(4,2) //从5个数取3个=(从 4个取3个)+(从4个取2个+之前没取那个) =C(3,3)+C(3,2)+C(3,1)+C(3,2) =1+C(2,1)+C(2,2)+3+C(2,1)+C(2,2) =1+2+1+3+2+1 =10 代码: #include using namespac原创 2016-11-28 12:40:07 · 256 阅读 · 0 评论 -
求有向图的强连通分量<Tarjan>
概念: 有向图强连通分量在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly connected)。 如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子图,称为强连通分量(strongly connected components)。 过程: 对于该图,刚1原创 2016-12-17 10:26:23 · 512 阅读 · 0 评论 -
golang基础
假期有时间,学两天golang,了解性能与思想。 1、首先装环境,下载golang环境包:https://golang.google.cn/dl/,下载后默认装在c:\Go。 2、(后面这步看环境,有时候能省略)然后把bin添加到path中,即可开始go! hello.go package main //这个包的name main import "fmt" //导入一个包,fmt是g...原创 2019-09-28 15:58:23 · 239 阅读 · 0 评论