华东理工某ACMer总结

作算法和做技术哪一个难? 都很难, 没有可比性. 可是算法作得好的能够转行作技术, 技术作得好的想转行作算法却很困难. 我是08年下半年将近期末的时候加入华理ACM队的. 我高中的时候没有编程经验, 数学也很差, 高考数学刚及格. 由于第二工业大学的网络工程专业的分数是最低的, 因此就比较巧合地步入了计算机行业. 大一有一门C++课程, 当时我在第一次上机的时候就深深的被C++迷住了. C++是一门极其优美的语言, 相比于高中计算机课上一笔带过的VB, 我最喜欢C++的花括号. 由于学校比较差, 周围的学生没几个专心读书的, 因此对于一个稍微想要学点东西的学生来讲, 这样的学校里的硬件资源就显得异常丰富了, 图书馆里不少计算机经典书都是新的, 并且自修室人也不多, 整个大一除了谈谈恋爱解解闷以及陪室友打打魔兽之外, 我大多数时间都在图书馆或者自修室, 虽然在那里的时候不老是作些学习方面的事情...我也会常常无聊的在网上乱逛或者处处下载资料作收藏家. 但正是这个时候我接触到了C++的圣经[The C++ Programming Language], 当时我看了一段时间的电子版, 由于不方便做笔记, 很不爽, 因而在08年1月的时候买了中译本. 以后的大一下学期我又陆陆续续看了部分[Effective C++], [More Effective C++], 还有一些数据结构方面的东西. 而后学期中期的时候我集中精力作了一段时间的数学建模竞赛. 大一结束的时候我经过插班生考试从第二工业大学转来华理, 很不巧, 插班生考试数学又是刚及格. 在暑假期间我去上了CCNA和CCNP的部分课程, 由于感受这种纯操做工同样的"背诵"活很不适合我, 因而半途而废了, 暑假在家的时候作了不少windows下的网络编程, 本身写发包程序, 写SYN攻击颇有意思. 大二刚来到华理的时候自我感受很牛B, 由于我自学过的东西几乎都没有人能来跟我作作讨论. 因而我自觉得很了不得, 也没怎么在乎学校的课程, 除了上课, 平时我几乎都在图书馆或者自修室. 这期间我接触了设计模式, 以及.NET开发. 大约在开学不久, 08年的Regional尚未开始的时候, 我据说了ACM这种东西. 当时对这个东西我是彻底没概念的, 在某个晚上我去奉贤311找了罗老师, 当时咏天也在, 是ACM队准备召新的时候, 罗老师跟每一个同窗谈了话, 我是最后一个, 跟他哗啦啦地说了不少之前我看过的书, 作过的东西. 被罗老师赞扬了一番以后我更加自觉得是了, 并以非正式的身份进了ACM队. 可是直到学期结束, 我也没作什么题. 学期将尽的时候我跟室友展开了一个旧书交 易网站的建设, 而后我就一股脑地彻底投入进去了, 用了将近五个月的时间, 其中占用了我整个寒假, 我用ASP.NET+Spring.NET框架写了一个自觉得有很高技术含量的简单的旧书信息发布平台, 全站单页面, 无刷新, 全部操做都用AJAX技术完成, 而且我本身设计了一个貌似很牛B的内存数据库. 结果在09年的上海市计算机应用能力大赛中, 个人做品只获了一个优胜奖. 貌似还有不少同窗沉迷于这些, 觉得这就是编程. 备受打击的我在迷茫了一阵子以后想起来ACM, 因而在大概3月底的时候开始在PKU切题. 以上都是以前的一些学习经历, 关于ACM的部分从这里开始. ACM是个颇有意思的东西. 起初, 我有点看不起这个东西, 相信不少过早接触技术开发方面的同窗都有这样相似的想法, 因而就有了诸如"作算法和作技术哪一个难"的问题. 今天再让我来回答这个问题的话, 我只能说, 都很难, 而且没有可比性. 可是我要补充一点, 大学生能够作技术, 不上大学一样能够作技术. 再要我说得明白一点的话就是, 一年前我用了将近一个星期的时间, 看着MSDN和CSDN写了一个windows下的扫雷程序, 而且在以前我用了若干个星期积累了SDK编程的一些知识, 而今天虽然我已经忘记了几乎全部SDK编程的细节, 不知道怎么去画一个自定义的按钮, 可是给我一台能上网的电脑和一天的时间, 我能把当时的那个扫雷程序写出来, 而且让它的代码量精简掉一半以上. 另一个事实就是, 绝大多数的ACMer以及几乎全部成功的ACMer的数学都很是好, 不论他们是原来就很好仍是后来变得很好. 如下说一些实质性的东西. 编码能力 在ACM的世界里, 编码能力和数学功底是绝对的王道, 硬要分个前后的话, 编码能力就是王道中的王道. ben在学校的时候几乎不看算法类书籍, 最多也就是看看网上零散的知识点, 可是他的成绩是你们有目共睹的, 其中最重要的一点就是他的编码能力至少在华理, 那是使人发指的强. 写一个容斥原理你要多久? 或者给你入射光和球的相关参数, 要你编码求出反射光的运动参数, 你又要写多久? 更有甚者, 在今年暑期的我的赛第一场最后一题, 给你一个扫雷过程当中的状态, 要你计算出全部可以肯定的雷, 这题ben用了不到半个小时就AC了. 今年的上海赛区一样对编码能力要求很高, 其中咱们没有过的I题, 当时ben打印出来的代码有4张纸, 也正是由于这么长的代码, 我跟sky连去纠错的信心都没有, 结果ben本身也没有可以在赛场上把错误找出来. 编码能力的培养的捷径就是作题, 尤为是搜索, 模拟, 计算几何等类型的题目尤为锻炼编码能力. 我可以很快适应ACM, 很大程度上也是得益于大一期间积累的编码能力和C++语言基础. 在锻炼编码能力时, 特别要注意作题要限制时间, 这点跟本身作一些小项目, 小程序彻底不一样, 不能拖拖拉拉一作就是几天. 最好的方法是在写代码的同时把本身作这题的开始和结束时间都标注上去, 这点在后面关于解题报告的部分我还会说到. 若是以为有时本身会记不住记录开始时间, 那就养成一个习惯, 每看到一题就先随便submit几个字母, 让它CE一次, 这样之后再回过头来看历史记录就能够知道本身作这题用了多少时间了. 限制作题时间又一个很明显的做用就是能够自我认识, 即了解本身对于某一方面的知识掌握程度, 若是平时遇到某一类型的通常题目(没有特别恶心的trick, 没有特别恶心的输入), 本身须要花超过2个小时去AC, 那么就几乎能够确定你在赛场上是不太可能把这题作出来的, 换句话说, 若是你在赛场上遇到这种类型的题目就能够暂时先放一放了. 编码能力的一个很关键的地方就是编码风格问题, 一些广泛适应的原则诸如"不要把复杂的语句写在[]里", "不要在if里写复杂的语句", "把if里复杂的逻辑拆分开", "全局变量要特殊命名"等等, 这里不可能一一列举, 惟一的办法就是每次本身在这里吃到苦头的时候把它记录下来. 具体的能够参考ben的方法, 例如把PKU的每次提交状况都粘贴进一个文本文件里, 而后在每次提交记录后面都加上一些注释, 好比"++i写成i++", 或者"dis数组忘记初始化"之类的东西, 这样即便不能保证此类错误之后不会再犯, 也至少能够下降你犯此类错误的几率. 关于下降犯错的几率还有一个生理学上的解释, 即记忆的编码并非纯粹的把东西原封不动地放进脑子里, 而是会被咱们的神经系统先分解, 储存在大脑各处, 而且其中夹杂了大量记忆的场景, 即记忆发生时的环境. 当咱们再次处于相似的环境时就有更大的几率把相关的事情回忆起来, 所谓的联想记忆也是这么一回事. 因此当咱们犯错误时就应该尽量地增长能够勾起咱们回忆的材料, 好比写下一些箴言形式的语句加深记忆. 解题报告 上面说到错误记录能够下降咱们犯错的几率, 一样的, 解题报告也是基于这一原理, 而且它每每比错误记录更加有效. 咱们经常能够看见一些大牛blog上的学术类文章写得很是风趣, 有时里面会参杂一些很搞笑的例子, 因而他们的文章较之纯理论的文章更容易被咱们记住. 这仍然是基于上述的生理学原理, 咱们用来会议的材料越丰富, 或者这些材料越投咱们所好, 咱们就越容易联想起来与这些材料相关的东西. 这个原理应该用到些解题报告上来, 那就是尽可能把本身关于这题的, 一些有意思的想法记录下来. 另外, 记录本身在解决这题时的思惟过程也是很是有益的. 若是你还不知道思惟过程的重要性, 那么请去看看波利亚的[How To Solve It](中文译名"怎样解题"), 这是每个理工科学生的必读读物之一, 甚至你可能会在看完此书的若干年之后才会忽然体会到其中的一些条款的极端正确性, 因此, 越早看这本书越好. 关于思惟过程, 并非十分容易被记录下来, 而且, 在你可以明明白白把你对于某题的思惟过程叙述出来以前, 你对于这题的解决始终都是不完整的, 即下次遇到此类题目的变种, 十有八九仍是无从下手(某些大牛可能由于语文水平不足而没法很好用语言表达, 这是特例...). 写解题报告的另外一个好处固然是有助于本身复习. 尤为是在比赛以前看看解题报告是很是有益的, 通常状况下, 就拿我来讲, 在两个月内作过的题目, 只要扫一眼解题报告, 通常我能立刻把它原样地用代码实现出来. 若是不是很肯定本身能坚持写解题报告, 或者担忧本身的解法的正确性(不少时候AC了的代码不必定是正确的), 那么就去写blog吧, 把解题报告贴到blog上吧, 也许会有人用很尖锐的言语指出你的错误, 但, 那不正是你想要的吗? 另外贴到blog上也方便了本身往后的搜索. 关于图论 论资格, 我绝对在ACM队是派不上号的, 切题数也十分寒酸, 因而当你处于这种状况的时候就应该考虑主攻某一方面, 毕竟ACM是一项团队比赛, 一把瑞士军刀总也没有几把专业的刀具功能强大. 我在队里主要负责的是图论, 因此我在这里着重说一下图论方面的东西. ACM题目类型主要分为DP, 图论, 搜索, 数据结构, 模拟, 计算几何, 字符串, 组合数学, 数论等, 其中前两个是重头戏, 我作过的每场比赛里, 前两种题目都是必然会出现的, DP很大程度上须要依靠YY, 即它与IQ的关系很大, 这几乎是一个毋庸置疑的事实...而且DP的某些思想贯穿大部分ACM题目, 很容易于其它类型题目融合起来, 想要掌握它非一朝一夕之事. 而图论相对来讲并无DP那么可怕, 比较容易入门, 而且不少图论类题目能够套模板, 可是相对的, 图论题目也能够出得使人发指的难, 而且其数学模型每每隐藏在搜索, 计算几何, 字符串等类型的题目后面, 即表面上看起来不是图论, 但实际上这题考的倒是图论原理. 图论的变形繁多, ACM题目中尤以Dijkstra最多, 看似简单的Dijkstra, 其变形程度是至关可怕的, 好比会消耗汽油的车的最短路问题, 这就是一个相对简单的二维Dijkstra, 而更加复杂的, 例如08年哈尔滨赛区的H, 一道隐藏在搜索背后的三维Dijkstra, 全场没有队伍出. 解决这类问题的一个根本性方法就是充分理解Dijkstra的定标技术, 以及规范的状态表示. 何为规范? 即当状态维数增高时, 须要对应的结构定义其状态, 而且此结构体切不可与存入堆的结构相混淆, 只要明确了Dijkstra的状态表示以及在某些限制条件下的状态转移(即图中的"边"), 则高维Dijkstra就再也不是没法攻克的拦路虎了. 图论的另外一个大头就是网络流, 这是图论中最容易套模板的一部分, 也是极其困难的一部分. 说容易套模板是由于每每这类题目在赛场上自己就是中等题或难题, 若是再不能套模板, 八成就变成了无人能出的大天然题了...网络流的变形数量几乎能够赶的上Dijkstra了, 若是算上匹配类的题目则就是有过之而无不及.网络流基本能够分为最大流, 限制流, 费用流三种, 其中最大流能够变形为二分匹配, 费用流能够变形为带权匹配. 其中最大流的算法是其它几种流算法的基础, 主流算法能够分类增广路类和预流推动类, 这两类算法几乎没有联系, 对于ACM, 只要学习前一种就足够了. 网络流类题目, 包括匹配类题目的核心思想就是增广路, 在匹配类题目中特化为交错轨, 这也是增广路类算法的核心. 各类增广路类算法的区别大都在于如何快速找到一条增广路, 其中比较简单的EK就是每次BFS找到一条增广路, 我就很少说了, 而高级一点的ISAP和Dinic都属于SAP, 二者都是基于分层图的思想, 实现分层图的方法只要为每一个顶点标记所在层号便可, 其中Dinic是经过一次BFS创建分层图, 而后按照创建好的分层图进行屡次DFS找到多条增广路, 从而不用像EK那样每条增广路都作一次BFS. 而ISAP则是在DFS的同时创建分层图, 即遇到DFS前进不了的时候对下一顶点从新标号, 因而这张分层图是逐步创建的, 创建后能够被后面的DFS所利用, 从而下降寻找增广路的消耗. Dinic和ISAP均可以用"当前弧"技术进行优化, 而ISAP还有一个进须要添加一行代码的GAP优化, 具体实现很容易在网上搜到. 这里要特别说一下Dinic和ISAP的适用范围, ISAP是万金油, 几乎能够应付绝大部分最大流和限制流的题目, 而Dinic特别适用于有向无环图, 即画在纸上能够分层的题目, 此时Dinic每每只总共须要作一次BFS(由于没有能够回退的边), 这时Dinic每每会比ISAP快不少. 要知道网络流是一个极度悲观的世界, 任何已知的算法都没有能突破O(n^3), 因此最大流算法写得很差很容易超时. 至于费用流, 能够基于EK算法, 只要将BFS改成SPFA就能够应付几乎全部的费用流问题了, 少许须要用到消负环算法的题目只要用SPFA找负环便可. 而限制流则只是一个定式的建图, 没什么特别的地方. 最后还有一种限制费用流, 若是遇到, 几乎确定就是大天然题, 能够直接无视之. 关于而分图匹配的算法, 网上资料不少, 核心思想仍是基于最大流, 只是可能不用最大流来解释也是能够的. 其中用于带权匹配的KM算法只要准备好模板便可, 通常不会有太大变形. 上面一段说的是既有的算法, 大部分均可以模板化, 其中要注意准备模板的时候最要准备针对整数和浮点数的两种, 对于C++程序员来讲, 相应的只要写成函数模板, 而后传入比较函数对象便可, 代码量几乎不会有什么增长. 下面要说说网络流类题目真正的难点之一, 建图. 网络流类题目难在它每每伴随着一个不太直观的建图, 其中有些利用到最大流最小割定理的建图已经有了套路, 好比说限制流的建图, 最大权闭合图等, 具体能够参见国家IO集训队2007年胡伯涛的论文. 另一些建图则颇有技巧性. 好比"比赛"类题目, 有不少场比赛, 要你求得分可否达到某种条件等, 这时须要把每场比赛当作顶点, 而后两条流进来, 只有一条能够出去, 这种题目的特点是存在大量容量1的边. 还有拆点建图, 这类题目每每一个顶点上包含了2种"属性", 而网络流算法中, 属性是体如今连在边上的, 尽可能要使每一个顶点表示的属性单一化, 因而就把一个点拆分红两个点, 而后把属性分配出去, 好比PKU有一题说企鹅在冰块上跳来跳去, 冰块就有两个属性, 一个是冰上的企鹅数量, 另外一个是冰块再被起跳多少次后会碎掉, 这时就须要把两个属性拆分开来, 拆点的另外一个应用就是求最小点隔集, 其中的思想就是像这题冰上企鹅同样, 把出度和入度两个属性分离开. 另一些更加巧妙的建图可能涉及逆向思惟等技高技巧性的思惟方法, 这里就不一一列举了. 网络流的难点之二是算法变形, 特别是有的题目在增广路上作文章. 有一种叫作"连续增广路"的技术, 须要深刻理解增广路的原理, 今年的上海赛区F题就是基于连续增广路的二分匹配加搜索, 虽然以前作过一个基于最大流算法的连续增广路, 可是很遗憾, 当时没有能想到这个算法. 另外, 与字典序相关的最大流题目每每须要枚举删边, 如字典序最小边割集. 与其它类型题目相结合的算法变形就多不胜数了, 最多见的当属二分答案判可行性, 不少貌似运输类的问题不少均可以归结到这种方法上. 刚才说道了二分答案, 这也是全部图论类(应该说不只仅是图论)题目最多见的变形, "最(大)小值最大(小)"是这类题目的最通常特征. 这类题目经常跟分数规划联系在一块儿, 好比最优比率生成树, 最优比率环等. 另外图论的一些经典算法能够衍生出不少强大的应用, 好比差分约束就是Bellman-Ford或SPFA的一个最好的应用, 这类题目的建图关键是找出差分式子. 一个须要特别注意的地方是[算法导论]上对于不连通图上添加顶点的讨论, 最好的方法是不用添加顶点, 开始时直接将dis数组清0, 而后全部顶点入队便可. 生成树类的题目也有不少变形, 如欧几里得生成树, 每每须要利用平面图上的一些几何性质建图, 如曼哈顿距离生成树, 限制度生成树等等, 此类题目套路很少, 且知识点比较散乱, 须要多作题来熟练. 图的连通性也是一个常见的考点. 割点, 桥, 强连通, 双连通问题的求解不只要准备模板, 还要充分理解模板. 一些地图上的题目(二维的方格阵), 每每有些特殊的性质, 不只须要你一些建图的敏感度, 偶尔须要在模板中添加一些巧妙的代码. 图论还能够与组合数学和计算几何等产生紧密的联系, 好比生成树和图的计数, 最简单的诸如n个顶点能够产生多少个不一样的无向连通图, 这时一些组合数学中的基础原理每每十分有用, 最典型的就是容斥原理. 图论中还有茫茫多的定理, 性质等. 我所知道的最雷人要数08年哈尔滨赛区那道赤裸裸的Havel定理了. 这些定理和性质可能会在一些意想不到的地方发挥做用. 最后图论中的一些NP问题或非NP可是代码很差写的问题, 如旅行商, 同构, 支配集, 最大团, 以及由树所引伸出的一大堆树形DP问题很差准备模板, 但能够考虑准备一些具备表明性的解题报告的纸版材料. 其中树形DP是一个很容易写错的重头戏, 它每每还和背包问题联系在一块儿, 尤为是泛化物品的背包, 关于泛化物品, 请参见DD牛的[背包九讲]. 关于工具 ACM的学习, 对于咱们一个弱校来讲, 没有牛B的教练, 没有严格的教学, 最主要的学习方式莫过于收集和记录, 不管是外部知识的搜索收集, 仍是内部知识的记录整理, 最离不开的当属Google. 搜索我就不用说了, 这里关于知识的记录和整理, 我要推荐以下几个工具: Google Docs, Google Desktop, Google Calender, Everything. 前两个都是辅助你记录和复习你的解题报告, 第三个用于时间管理以及任务计划, 详情请本身去用Google搜索去. 最后一个Everything是windows平台下特别针对NTFS文件系统的一个神奇的搜索工具, 它能够仅仅使用约5MB的内存在1秒内搜索出你的全部NTFS盘上任何一个文件名跟输入关键字匹配的文件, 其原理听说是基于NTFS文件系统的一个特殊的记录表的. 这个东西的一个最有趣的应用能够是这样: 把你硬盘上的全部文件和文件夹都加上标签吧, 用"[]"括起来, 而后用","隔开, 而后任什么时候候你均可以经过标签搜索到你想要的东西, 一切图片, 论文, 软件等等, 好比PKU的1001题我就能够加上"[java,BigDecimal,浮点数,高精度]"之类的字样. 甚至更精细一点, 定义一些特殊的tag, 好比"tag.r"表示"须要review", "tag.h"表示"我是在别人的help下作出的题目", "tag.p"表示"这题我还有未解决的problem"等等. 关于学习 我所知道的关于学习, 90%来自于[www.xiaolai.net](李笑来的blog), 和[www.mindhacks.cn](刘未鹏的blog), 把里面关于学习方法的文章看完, 你就升华了. 在此特别感谢上海第二工业大学的王学长告诉我Google Reader的存在, 大二开始的时候我由于这个接触到blog这种东西, 让我对学习方法有了一个相对清醒的认识. 也许不少所谓的方法咱们早就知道了, 可就是"不少道理咱们其实咱们老早就知道, 只是须要一个权威人士告诉咱们它确实是正确的". 这里特别要说一些关于学习效率和顺序的问题. 大二就去看什么人工智能, 天然语言处理, 对于绝大多数人来讲, 那就是低效, 甚至你在看这些书的时候连笔记都不知道该怎么记, 更况且还有那么多人看书都没有记笔记的习惯. 可是即便你用心作了笔记, 也不必定能学到什么东西, 好比我当时就将近记了一大本的关于人工智能, 心理学之类的东西, 可如今回头看看一恰的笔记几乎已经不敢相信那是我本身写的了, 彻底不认识. 究其缘由有二, 一是先导知识储备不足, 二是没有及时回顾笔记. 这两点在不少人的学习过程当中都在不断重复上演着, 其结果就是浪费了大量时间却学不到什么东西. 所谓的"作开发"也是如此, 连关系数据库的几个范式都不知道是什么就去弄什么SQL Server, 搞什么ORM, 全都是空谈, 充其量也就是会用用工具而已. 就我目前的经从来看, 我认为做为一个软件方向的CS学生, 相对高效的学习方案应该是学基础课时学好高数和英语(我如今就特别想再去重学高数), 闲暇时间搞搞C++, Java, 等各类语言, 至少作到一个了解的程度, 个别的要熟练, 与计算机软件关系不是很大的理科课程成绩搞到90+就行, 好比物理, 好比电路, 线性代数很简单, 几率论要特别认真学, 特别是常常要拿起来复习复习, 这是一门终身受用的学科. 而后其他的时间能够用来啃算法导论, 相信我, 这本书普通人大学四年根本不可能啃完. 总之数学类的书看的再多都嫌少. 另外能够扩展出去接触一些人文类书籍, 特别是传记类, 励志类的东西. 关于修养 我刚上大学的时候有这么一个习惯, 拿一些本身心中已经知道答案的问题去请教老师, 以显得本身很好学, 很牛B. 记得我有过在软件工程选修课上跑去问咱们学校有没有关于"设计模式"的课程, 或者问ben一些明显Google一下就能知道答案的问题...等等等等都是心里浮躁的表现. 自我修养是一种很要紧的东西, 对于一个性格内向的ACMer来讲, 这每每不会有什么问题, 这是由性格决定的, 但不是每一个人都性格内向, 不是每一个人都能保持内敛. 一旦你有装B(一切骄傲, 或者由于本身的某方面才能而沾沾自喜, 或者想要显露本身, 无论和不合适, 暂且用"装B"来代替吧)的行为或者想法, 或者仅仅是潜意识, 那就预示着你会被大多数人看不起, 会大量浪费本身的时间, 会下降本身的学习效率, 会使本身成为井底之蛙. 不过彻底不装B倒也不太好作到, 好比我觉得本身写blog多少有些显露本身的意思, 自我分析一下, 动机大概有以下几条: 想让往后身边的某人忽然发现我说:"啊, 你就是Answeror啊!", 想让我之前女友在若干年后忽然发现个人blog说:"原来我之前男友这么好学, 这么有修养有文化!", 想让我被某些大学教授或者公 司里的人认识, 想结交志同道合朋友, 想让别人给个人解题报告挑错... 写blog这件事情也就算了, 毕竟是件利人利己的好事, 偶尔装装B也就算了. 可是像我在本文开头说的那样, 刚进华理仅仅由于本身有点C++和网络工程知识的皮毛就装出一副很牛B的样子, 那种装任谁都没法忍受. 尤为是第一次跟罗老师的谈话, 简直就是装到了极点, 以致于我后来就有这么一个想法: 反正我能够作技术活, 干吗非要搞ACM, 我能够自由地去学心理学, 学人工智能, 学.NET, 我牛B着呢, ACM算个屁. 而后我就傻BB地搞了5个月的.NET, 而后到大三上数据库原理的时候发现当时花了一个星期学的种种东西如今只是一节课的事情, 直到那时我还在装B, 跟旁边的同窗说我上述的体会, 仿彿就是在告诉他说:"你看我牛B吧, 我老早就知道这是什么东西了, 还作过它的开发", 时至今日, 我仍然有时会忍不住在同窗讨论C++种种语言特性时上去插插嘴, 装装B. 高中的一个好友曾这样形容我: "他这我的啊, 只要看了什么书或者电影之类的, 就要立刻在他的文章里体现出来". 听起来很可笑吧, 请正在看这些文字的你不妨停下来反思一下本身最近一个星期有没有相似的行为? 做为一个ACMer, 改掉这些吧. 咱们作ACM的, 原本在这个学风不正的计算机学院里就是一群特殊人群, 咱们须要作的仅仅是不停地补充知识, 完善本身, 不必费尽心机去博得他人的一两句赞美之辞. 我是谁? 我就是华理的一个ACMer. 我天天窝在机房里为的不是哪天去比赛有小MM来找咱们签名, 而是让本身精通各类算法, 提高本身的数学修养, 加强本身解决问题的能力, 培养本身内敛的人格, 而后在某日某公 司的面试时让面试官打心地里认为我是我的才, 而后用我之前长期积累的知识写出卓越的软件. 但愿你我都能早日心安理得地说出上面的话.     http://forum.byr.edu.cn/bbscon.php?bid=212&id=36861
相关文章
相关标签/搜索