C++
文章平均质量分 79
诚实的偷包贼
这个作者很懒,什么都没留下…
展开
-
多用STL 及 C++ string的两个我不知道的用法
其实从之前到现在的编程比赛,我每次都发现善用STL的好处很大,很多时候是因为自己想直接用数组,因为觉得数据速度更加快,而且用得多比较手熟···但总有那么几次要么在map上,要么在堆上面(每次都是手打堆········),要么在其它什么的,链表一直不想用vector,还是因为觉得速度慢,有点臃肿···哎,其实慢得了多少呢,以后多多注意多多用好了原来堆是在里面,长姿势长姿势原创 2013-04-09 13:52:09 · 1006 阅读 · 0 评论 -
Sicily 1485 Hanoi双塔问题 (SOJ 1485) 【高精度】
原题地址:点击打开链接——————正文——————最中规中矩的高精度问题。令f[n]为有2n个环时的移动次数,则f[n]=2*f[n-1]+2,因为f[n]的移动次数可以看成是用f[n-1]步移动了2*(n-1)个环到中间的柱子后,用2步移动左边的两个环到右边,然后再用f[n-1]步将中间的2*(n-1)个环移动到右边。从递推公式可以发现当n=200时,数字会超过2^200,所以要原创 2013-05-20 20:46:46 · 1630 阅读 · 0 评论 -
Sicily 1444 Prime Path (SOJ 1444) 【BFS 广度优先搜索】
原题地址:点击打开链接乍看此题,感觉有点吓人,我天生对涉及素数的题目有恐惧感,然后觉得Prime这个单词在此题中双关的很好······不错不错,题目蛮有意思的。最近要开始准备保研了,手头也有两个小项目不得不认真动工,所以留给刷题的时间可能就少了。还没有完全看过《算法导论》,《数据结构与算法分析——C++描述》,《HeadFirst Java》,之前一直想看的黑书《算法艺术与信息学竞赛》可能原创 2013-05-20 13:49:41 · 1594 阅读 · 0 评论 -
Sicily 1543 Completing Brackets (SOJ 1543) 【括号匹配】
原题地址:点击打开链接直接正文了,这题比较水,知道括号匹配的基本原理就可以了,以往的思路是使用一个栈,碰到左括号入栈,碰到右括号出栈。这里使用相同原理,碰到左括号计数器加1,碰到右括号减1,如果计数器是负数,那么就在字符串最前面添加左括号,如果扫描完字符串,计数器是正数,那么不断地在字符串末尾添加右括号,每添加一个,计数器加1 ,很好做的一道题,代码也不长。拜写博客所赐,我在写的时候忽然觉原创 2013-05-16 15:06:11 · 1365 阅读 · 0 评论 -
Sicily 1019 Apple Tree (SOJ 1019)【树形dp 树形动态规划】
原题地址:点击打开链接这题也是蓄谋已久,很久之前就看过,但是十分没有头绪,在搜了一下答案后发现要用树形dp,当时问了周生什么是树形dp,周生直说是他非常不想碰的一种东西。好吧当时我一听吓尿了干脆也不碰了。但是下定决心解决它的日子也到了···毕竟省赛不能拖子畦大牛的后腿,也在经过几次面试后知道算法的莫大重要性(尽管暂时的水平应对面试还凑合,但是无法给面试官一种“quite smart”的感觉原创 2013-05-03 23:11:57 · 1607 阅读 · 0 评论 -
Sicily 1346 金明的预算方案 (SOJ 1346) 【DP 动态规划-背包问题】
原题地址:点击打开链接这两天我消失就是为了做这题……用自己的方法做总是TLE,肯定是我对DP问题还不够熟练&理解深入,一怒之下看了两篇参考文档,一份是《国家集训队2009论文集浅谈几类背包题》,感觉写得很鸡肋,看得十分辛苦,可能因为我智商不够;但是看上面那篇还是有用的,因为里面引用了《背包问题九讲》,俗称的“背包九讲”,好东西来,网上处处能下载得到,比前一份易懂多了。做了这题,鄙人感觉自己原创 2013-06-25 11:29:33 · 2501 阅读 · 0 评论 -
C++类、结构对象内存布局浅析
最近面试多,出的题目很多都有如下形式,给定一个class或者struct的定义,例如这样:struct node { int a; char b; int c; char d;};问题是:sizeof(node) = ?之前了解过对齐的概念,但是不深入,所以在这里自己做了一些小测试,说一下自己的看法。先告诉大家吧,上面那题答案是16。如果用“对齐”的说法,那么原创 2013-09-29 20:49:08 · 5280 阅读 · 7 评论 -
定义一个类的类型转换结果
今天看《Effective C++》,发现了一个一直不懂的技巧,就是定义一个类在进行类型转换后的结果,例如我有一个这样的类:class Sum2Int { int a,b;public: explicit sum2Int(int aa, int bb) : a(aa), b(bb) {} } };如果我希望它可以转换成int的时候,得到的结果是a+b,应原创 2013-10-07 10:03:41 · 1718 阅读 · 0 评论 -
C++中的“模板元编程”——Template Metaprogramming(TMP)
C++中的“模板元编程”Template Metaprogramming(TMP),从一个极简单的小例子窥探提高程序性能的一种行径——前移运行期计算至编译期。原创 2013-11-07 20:36:08 · 6382 阅读 · 2 评论 -
Sicily 1222 单词选择 (SOJ 1222) 【堆 优先队列】
原题地址:点击打开链接今天我要发表一篇為什麼很多人都比较贱的演讲,因为有的人就是要到快走投无路或山穷水尽才懂得忽然拼命干正事,就像我。通常经常这样做的结果有两种——1 就是短命+每次拼都成功了;2 就是短命+不是每次都成功了。 暂时我是属于第一种,但是即将又有另外一个挑战,我觉得我真的比较贱,因为这样的生活我觉得不是正常的,我还要照顾妹子,我怎么能让身体经常受这样的折腾?所以这一次无论怎么样原创 2013-07-13 10:52:08 · 1354 阅读 · 0 评论 -
避免将unsigned int和int放在布尔表达式中作比较
这个标题不够犀利,不少人看到第一反应肯定是——“这我知道啊”。但是很多人肯定写过如下的代码:#include#include#includeusing namespace std;int main(){ string s = "abcde"; for(int i = 0; i < s.size(); ++i) { s[i] = toupper(s[i]原创 2013-11-25 11:45:11 · 1880 阅读 · 0 评论 -
今天终于刷完leetcode的题了,同时分享一些资料
如题了……持续了将近2个月的leetcode刷题之旅今天终于暂时告一段落了(以后肯定还会加题)。记得我当初刷的时候只有134题,现在就变成150题了,可以说这些题都是基础,但是却是十分强大的基础题,对于扎实编程功底很是有帮助,其中涉及到的链表、树等的题目更是如此。在涉及链表的题目中,我多次使用二级指针(什么是二级指针?例如ListNode **)来解题,所以对二级指针的运用也比以前熟练了很多。原创 2013-12-10 16:22:57 · 38533 阅读 · 21 评论 -
Sicily 1308 Dependencies among J (SOJ 1308) 【BFS 广度优先搜索】
原题地址:点击打开链接一开始以为是拓扑排序,因为看上去比较像,等写了一半后发现实际这题的做法和广搜是一样的。——————正文——————根据输入可以建立一个有向图,从目标点m开始,向前寻找其紧前节点,然后将所有这些紧前节点(包括紧前节点的紧前节点)的时间值加起来就可以了。寻找所有这样的节点的方法就是用广搜的方法,使用队列即可。比较简单的一个题目,就不画图了。这题如果使用ci原创 2013-05-20 22:15:16 · 1665 阅读 · 0 评论 -
Sicily 1327 Pinary (SOJ 1327) 【dp 动态规划】
原题地址:点击打开链接这一题能不能算DP呢,其实只是一个简单的迭代,不过也可以说是DP。初看这条题我是没有什么想法,思路比较乱,但是想到了状态转移之后就豁然开朗。——————正文——————这题的时间卡的比较紧,数据规模最大有9*10^7,而1s大概就允许复杂度为10^8左右,所以比较高效的算法才能够AC假设f[i]表示当结果的位数为i时,i为所能表示的所有数字的数量,即便当i原创 2013-05-22 15:36:45 · 1404 阅读 · 0 评论 -
Sicily 1343 Jam的计数法 (SOJ 1343) 【递归】
原题地址:点击打开链接原本以为要用全排列字典序的相关知识,特意查资料,找到之前一直看不明白的全排列与序号之间的关系转换的内容,全部看懂后着手写题,发现用不到,或者说我不知道怎么样,不过木有关系,因为查资料学到不少东西,关于全排列的字典序序号以及排列本身的关系,我专门写了一篇博客,感觉会比网上能容易搜出来的博客要好一点,链接是:字典序序号与排列的关系【全排列与序号换算方法】这题不难,很容易想原创 2013-05-25 17:23:33 · 1607 阅读 · 0 评论 -
POJ 1386 Play On Words 【并查集】
原题地址:点击打开链接其实本来想做关于欧拉回路的题的,不知道SOJ哪题是欧拉回路的,GOOGLE一下发现说POJ的1386要用欧拉回路。但是吧……但是吧我怎么做就怎么感觉这题不是欧拉回路。欧拉通路应该是不重复地经过所有的边1次,即一笔画,欧拉通路和欧拉回路是有点不同的,欧拉通路经过所有的边但不一定(一定不?)回到原点,而欧拉回路则是会回到原点的。这条题目网上很多人写解答,都是说欧拉原创 2013-06-06 15:43:25 · 1241 阅读 · 0 评论 -
Sicily 1136 山海经 (SOJ 1136) 【Segment Tree 线段树】
原题地址:点击打开链接这题花了整整一天来做,错误基本都是TLE,但是做完非常哈皮,因为感觉比较好地运用了线段树这个数据结构。话说这几天广东不是一般热,中午根本睡不着,满身黏糊糊,课室和图书馆倒成了平时宅男的去处,不过这仅仅限于他们宿舍没有开空调的情况下·····然后昨天的过劳导致了今天的脖子和肩膀连成一片的疼,而且我能明显感觉到头脑恍惚。呃,这题我感觉是可以好好写,但是感觉现在写解题报告好原创 2013-05-15 15:34:48 · 1806 阅读 · 0 评论 -
Sicily 1135 飞越原野 (SOJ 1135) 【BFS 广度优先搜索】
原题地址:点击打开链接小时候看过这题,但是当时还小不会做,昨天晚上将其解决了。写省赛的总结(参见这里)花了不少时间,啊,所以堆到现在才来写。要吐个槽的是原本打算这周回家,以为在经过各种任务、面试洗礼后能够舒舒服服地和妹子回家看看钢铁侠1、2+复仇者联盟,没想到妹子星期6有广东移动的笔试要去,我也可能要在19号有另外一个面试·····哎,我想回家啊!————————正文————————此原创 2013-05-14 10:13:59 · 1846 阅读 · 1 评论 -
Sicily 1149 等价表达式 (SOJ 1149) 【中缀转后缀】
这题乍一看觉得好蛋疼(广东话叫“DUM春”),我是要把所有的表达式都简化到最短,还是把所有表达式都展开到最长?最麻烦的就是有个变量a,好了下面是正文了。——————————正文——————————从这题我就学醒目了,类似近似的思想,从题干可以知道最高的次数是10···其实不是10,因为可以是这样:a^10^10^10^10.... 这样一直下去,从题干知道最长为50个字符,每个^1原创 2013-05-11 00:27:29 · 2013 阅读 · 1 评论 -
Sicily 1033 City Road (SOJ 1033)【dp动态规划】
原题地址:点击打开链接感觉也是一题水题,不过也看了tips,啊!!!!!没办法啊,人菜,搜答案的时候我还没点进去搜索结果,看到DP我就立刻知道怎么做了····呃·····其实动态规划我一直觉得是十分难想的题目,不过从第一次接触动态规划到现在,已经有了长足进步,继续加油吧~-----------正文---------------原本想着能不能用排列组合,不过后来看到题目后就打原创 2013-04-29 19:58:56 · 1382 阅读 · 0 评论 -
Sicily 1091 Maximum Sum(SOJ 1091)【dp动态规划】
原题地址:点击打开链接题目之前一直有打算做,但是到近来才马力去想,可惜的是没想到呃肯定很多人觉得这题很水,有很多人第一眼看到答案,或者做出来之后,就忽然觉得这题很水····可惜我天资不太行,虽然写完后代码只有寥寥几十行,但还是没觉得它水····————正题————以sample input为例,对于这个序列:1 -1 2 2 3 -3 4 -4 5 -5原创 2013-04-29 14:14:28 · 1294 阅读 · 0 评论 -
Sicily 1224 速配游戏 (SOJ 1224) 【暴力匹配】
原题地址:点击打开链接期末考试结束,各种手尾也收拾得差不多了,再过一阵子就往北京去了。最开心的是新一届的班委也终于敲定,我一个人谈了5个班委,百发百中十分高兴!班务后继有人心头大石就可以放下!在此希望10计科B班的新一届班委能够工作顺利、收获良多~!最近又想了一些MSRA的事情,将要去那里了内心比较兴奋&激动,不过同时又会有些担心,因为不知道自己能不能做好吧,而且5年的博士生涯,应该十分漫原创 2013-06-20 11:50:03 · 1629 阅读 · 0 评论 -
POJ 2230 Watchcow 【欧拉回路】
原题地址:点击打开链接这题终于是纯粹的欧拉回路了……关于欧拉回路,各位可以看一下我写的这篇博客:欧拉回路如果你知道怎么做欧拉回路,那么这题就很简单了,使用邻接表建立邻接关系,这题中的所有边都是有向边,而且两个顶点之间的边是成对出现的,所以所有的顶点度必定是偶数,必定存在欧拉回路。使用递归查找欧拉回路,并且在递归函数的最后一句可以打印当前的节点,这样子打印的结果和当前查找的顺序是相反的,但是原创 2013-06-07 21:02:41 · 2067 阅读 · 0 评论 -
Sicily 1252 Defining Moment (SOJ 1252) 【暴力匹配】
原题地址:点击打开链接好久没有做题了,发现果然还是很喜欢做题啊···耐没做手生,所以挑了一题水一点的。这题按道理来说有比较优雅的解法,但是我懒就直接敲了暴力了,直接全部使用if语句来匹配,匹配的时候也没有考虑效率,直接使用的是C++ string里面的“substr”方法,如果说数据规模大一点的话,或者说给出的字典规模大一点,初步想法可以使用树结构(字典树是什么?我去查一下先)来匹配前缀或者后原创 2013-06-03 22:16:49 · 1322 阅读 · 0 评论 -
Sicily 1295 负权数 (SOJ 1295) 【进制转换】
20130619.后来我在网上漫看Matrix67的博客,发现了这篇专门讲述进制转换的,“好嘢大家摞出来分享”,可以先参看:Matrix67《漫话进位置》原题地址:点击打开链接这题是目前我见过最难的(对于我来说)进制转换题,当然对于一些大牛来说想必思路是十分的清晰,可是对于鄙人是十分困难。做题思路是问了周生然后才写出来的,通过的人数比较多````莫非是水题行列之一?咳咳,不管怎么说原创 2013-05-28 12:09:51 · 1331 阅读 · 0 评论 -
Sicily 1142 排序 (SOJ 1142) 【搜索剪枝】
原题地址:点击打开链接看到这道题目我立刻反应出来是《编程之美》里面的烧饼问题,在看烧饼问题之前,我以为这题是有多项式复杂度解法的····但是后来发现暂时还没有。其实编程之美里面写的代码比较长,实际在这里写应该不用那么长。传统的搜索剪枝是深搜+剪枝,每次找到更小的值就记录下来,如果当前递归的深度超过当前最优值,那么就剪掉。如果可以记录同一深度已经访问过的状态,那么可以做出一些优化。这原创 2013-05-26 16:57:37 · 1628 阅读 · 0 评论 -
「更快!更爽!」吹水新闻2.0
历时半年的「吹水新闻」重构升级终于完成吹水新闻2.0的地址是:http://news.reetsee.com;吹水新闻1.0的地址是:http://reetseenews.duapp.com。(由于没有续费可能已经失效)那么新版比旧版相比有哪些不同?原创 2015-01-04 22:03:47 · 1532 阅读 · 0 评论