STL
流年冲淡时光
这个作者很懒,什么都没留下…
展开
-
HDU5312string类的字符串赋值函数和查找函数
当时撸的时候第一发没看清题就撸了一发,后台数据太水给过了,后来看了看发现读错题了,又撸一一发string交上去了#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define LL l原创 2015-07-27 08:51:27 · 397 阅读 · 0 评论 -
UVA10954哈夫曼树与优先队列
这个题就是一个最小堆,也就是常说的哈夫曼树,可以直接使用STL优先队列,先给一个哈夫曼树的代码,建树,取堆值,插入值。哈夫曼树:#include#include#include#include#include#include#include#include#include#include#include#include#include#define LL lo原创 2016-03-21 23:49:17 · 440 阅读 · 0 评论 -
UVA10763交换生配对问题,排序加二分,或者multimap
俩种做法:一:排序之后二分查找y值区间,进行配对。代码:#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;const int maxn=1e6+10;struct ss{ int a,b原创 2016-03-05 13:15:31 · 377 阅读 · 0 评论 -
HDU5496求整数序列的子串的并集和,map的简单使用
脑子笨想了好久才想懂这题是怎么回事,首先自己比赛的时候受上一场的BC的影响,感觉和上一场的C题类似,想都没想就直接开撸了,然后后来发现自己理解错题意了,这里就是按照题解说的来做的。考虑每个数字对最终答案的贡献. 对于每个数, 我们只算它出现在连续相同元素的第一个时的贡献, 这样会使计算简便很多. 假设这个数是a[i]a[i], 那么i后面的随便选有2^{n-i}2n−i种.原创 2015-10-04 18:58:53 · 736 阅读 · 0 评论 -
CF582A给出n个数的相互GCD,求这n个数,map的使用
反正比赛的时候没想到怎么做,主要应该还是智商问题,比赛的时候胡思乱想很久,没想到怎么做:其实也很简单:题意:由n个数,可以构成一个n*n的gcd矩阵 (每两个数之间)现在给你n*n个数(任意序),求出 矩阵对应的 n个数(任一合法答案)可知: 最大的数必然是要求的数。。。(不可能存在两个数的公约数是他)(如果最大的数有多个,那么MAX与MAX的公原创 2015-10-04 22:02:43 · 685 阅读 · 0 评论 -
小白书之隐式图的bfs
可以把三杯水各个时候的状态想象成一个点,能到达的点画一条有向边,这样就出现一个图,对这张图进行dfs,这里注意要用一个set去掉重复的状态,以免陷入死循环。同时这题用一个数组同时存储了三个杯子的状态并且顺带储存了父亲节点的状态,比较巧妙,但是好像一般bfs都是手写的队列,但是我习惯了用queue容器。#include#include#include#include#includ原创 2015-09-14 14:01:40 · 701 阅读 · 0 评论 -
UVA表达式树的后序遍历和层次遍历和建树
太笨又太蠢,做的小白书后面的题,前面写的线性表部分的内容,就一直在想线性表的做法,想vector,想stack,结果是表达式树,建立二叉树根据后缀表达式,然后层次遍历一遍反转就行了。#include#include#include#include#include#include#include#include#include#include#include#inclu原创 2015-08-20 20:22:05 · 439 阅读 · 0 评论 -
UVA11111套娃匹配题,注意字符串流使用简化代码
开俩个栈,第二个栈用来判断外部容量是否大于内部容量,同时这题读入可以用字符串输入流,极大简化代码,注意toy必须成对输入,也就是不能有多余的负值,也不能有多余的正值,因为忘记判断多余的正值贡献了无数发WA。#include#include#include#include#include#include#include#include#include#include#原创 2015-08-19 20:26:55 · 463 阅读 · 0 评论 -
UVA673括号匹配之vector和stack使用的时候的注意点
这题其实是一个简单题,无耐自己太笨,刚开始想投机取巧,把思路搞错了,后来直接用vector暴力模拟一发,结果无数发RE,最后发现i一直RE,强制转化为int类型即可,后来感觉自己vector写的没人别人用栈写的简单,又撸了一发stack的,然而又RE,RE无数发后,发现,stack在top之前必须判断是否非空,否则RE。贴上代码,注释部分为Vcetor写的。#include#原创 2015-08-19 11:17:04 · 505 阅读 · 0 评论 -
UVA442矩阵乘法之求出多个矩阵相乘乘法的次数
这个题自己刚开始写的,受前面那个题的影响开了俩个栈,一个拿来存括号了,然而这个题保证输入合法,不需要将括号入栈,另外自己刚开始还重重载了矩阵赋值函数,后来发现矩阵竟然不需要重载赋值函数,不知道为什么矩阵不需要重载赋值函数。#include#include#include#include#include#include#include#include#include#i原创 2015-08-19 14:36:09 · 558 阅读 · 0 评论 -
UVA101积木模拟问题,vector整体擦除和整体插入的使用
这题先是WA了三发,然后感觉不科学,看了下题解,原来自己把题意完全理解错了,重新改了下,然后莫名其妙RE一发,然后T了三发,早晨醒来去掉几个if语句竟然过了3000ms超时瞬间变成了3ms,但是我感觉就去掉了几个if语句而已对于总的时间复杂度应该没有影响的,队友告诉我去掉几个if语句相当于很大的剪枝,弱渣表示刚刚知道。看了别人的题解,感觉自己的vector代码比别人简单,思路比别人原创 2015-08-18 09:17:55 · 594 阅读 · 0 评论 -
UVA127vector套栈模拟
这题首先题意很难理解,搞了好久才基本上搞明白,然后又想怎么去敲代码,起初想的就是vector套个stack,但是写着写着写残了,就换了vector数组的写法,写了一会发现又残了,重新回头写vetocr套stack,竟然想通了,果断AC一发。卡时间过的,毕竟vector套栈,比较费时间。#include#include#include#include#include#inclu原创 2015-08-17 20:08:54 · 654 阅读 · 0 评论 -
hdu5289RMQ求区间最大最小值和单调队列维护区间最大最小值
RMQ和单调队列都可以求区间最大最小值,但相对来说,单调队列更快一些RMQ代码:枚举左端点,二分右端点。#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define LL long longc翻译 2015-07-24 08:46:35 · 661 阅读 · 0 评论 -
小白书之栈的调用过程
注意使用栈的时候的栈的调用过程,以及栈的函数等等。注释的代码是我乱搞的,也不知道对不对。正确的姿势,是非注释部分模仿栈的调用过程写的代码。#include#include#include#include#include#include#include#include#includeusing namespace std;const int MAXN=1000+10;int原创 2015-08-14 19:25:39 · 414 阅读 · 0 评论 -
优先队列的使用
priority_queue调用 STL里面的 make_heap(), pop_heap(), push_heap() 算法实现,也算是堆的另外一种形式。先写一个用 STL 里面堆算法实现的与真正的STL里面的 priority_queue用法相似的priority_queue, 以加深对 priority_queue 的理解#include #include #include转载 2015-08-30 10:08:02 · 291 阅读 · 0 评论 -
uva10185set的自动排序和自动去重以及遍历和string的的辅助问题
set的排序和去重以及遍历看下面程序,string是一个类所以不能把一个char型字符赋值给string,但是char型数组可以,另外在不同的编译器上对于string以什么结尾的说法不一,最好不要用string的有效字符的后面一位来做一些事情。#include#include#include#include#include#include#include#includeus原创 2015-07-20 16:43:26 · 527 阅读 · 0 评论 -
UVA548递归二叉树求路径和和根据中序和后序建立二叉树
由于自己很少写递归,这题刚开始递归写了一半就放弃了,其实这个递归挺简单的,根据中序遍历和后序遍历,每步都加上根节点的和就可,到达叶子节点的时候判断下改变一下值即可。另外这题也可以建树做,后面给出建树的代码。#include#include#include#include#include#include#include#include#include#include#原创 2015-08-25 12:53:47 · 252 阅读 · 0 评论 -
UVA112二叉树之使用标记忽略空格和回车
对于空格和回车使用标记来判断,主要分为左括号,右括号,和数字的状态,左括号的时候,判断之前是否为读数状态,如果为读数状态,如果栈为空,则数字为前面那个数字的左节点或者右节点,同时标记一个re,每次入栈时加上栈的值,为数字时加入数字数组,为右括号时,判断之前是否为左括号的读入状态,同样是用标记来判断,如果是,如果栈为空则为空括号,直接可以跳出,如果栈非空,则栈顶元素的做节点或者右原创 2015-08-25 10:46:43 · 353 阅读 · 0 评论 -
leetcode之最长连续子串之set和unordered_set.
这题说是O(n)算法,我自己用的set集合,按道理来说时间复杂度是O(nlogn),但是也能AC。看别人都是用hash即unordered_set,这个我不太清楚,可能时间复杂度是O(n)吧:set代码:class Solution {public: int longestConsecutive(vector &num) { if(num.size()==0)原创 2016-09-07 22:18:43 · 585 阅读 · 0 评论