0%

给学弟学妹们的一些ACM建议

学习ACM的意义

方若宇 2018/8/1 23:43:25
不学算法除了让你的思维变得江化一点意外没啥用

方若宇 2018/8/1 23:44:39
如果本来思维就很江化的,多学点没坏处,姿势水平本来就足够谈笑风生的就忽略吧

方若宇 2018/8/2 0:40:43
你选择了程序员,但是太菜被扔到了一个未知的无人岛上
你有10个技能点,两个技能: 捕食,野外生存
你全点了捕食,于是食物不愁了,然后由于其他的生存技能都不会,你死于大自然的考验
你全店了野外生存,于是勉强活下来了,但是由于捕猎技能太差,你终于在你完美的大房子里饿死了

总之只学习算法,并不能让你拥有工作的技能。但是不学习算法你只能从事于低级的工作。
所以对于编程而言,建议一定要学习好算法~

学习目标

首先学习好编程语言基础,至少C语言你得学完吧。
还有就是数据结构,这可是编程,学习算法的基础哦~
之后如果是学C++的,怎么找也得把STL部分掌握了吧,系统语言自带的STL库非常好用哦。
如果是学习Java的,大数等等的库必须得掌握了,你的队友就靠你来解决这类问题呢~

之后就开始学习算法吧,请看接下来的训练部分~

训练部分

杭电HDU

建议ACM入门,首先要熟练应对签到题。
先开始做HDU简单题吧,题号20002099这部分的题目都是水题。
基本5
10分钟一道的水准。
给一周时间刷完这一百道题,就差不多了

LeetCode

大名鼎鼎的LeetCode网站,Google等公司都会参考你在这个网站的做题情况。
这个网站今年好像出了中文页面,但是不建议看中文,毕竟正式ACM比赛也是英文题目。
在这个网站学习的好处是,你不需要编写整个程序,只需要完成所需要的函数即可【仿佛没啥区别
题目基本都是很基础的问题,二叉树、图、贪心等等算法都有涉及,很适合初学者刷题学习算法知识。
这个一天5~10道题的速度就差不多,尽量多刷吧。
等所有知识点都刷够一遍了(怎么着也得两三百 三四百道题吧),基本就能达到很高的水平了。

UVa Online Judge

大名鼎鼎的UVa,世界上最大最有名的OJ,题目巨多而且巨杂,数据也很刁钻,全世界的顶尖高手都在上面。
国内学算法的应该都看刘汝佳的《算法竞赛入门经典》这本书吧。里面所有题目均来自UVa。
这里面的题目包罗万象适合稍微有些水准之后来这里刷题。
到这个阶段就不是单一的靠刷题数取胜了,而是按照知识点到各个OJ里面找题刷吧。

北京大学POJ

这也是ACMER用的比较多的一个OJ,和UVa一样建议掌握了知识点之后,到里面去刷各种稀奇古怪的题目。

接下来推荐几个我用过,用的不怎么多的OJ
Codevs社区 【一个国内比较大的OJ社区,闹出来的风波也是挺多的】
蓝桥杯训练系统 【一个非常水的oj,只建议在蓝桥杯比赛前刷刷里面的题,熟悉一下蓝桥杯题目类型】

Virtual Judge
最后说一个这个,这不是一个OJ。是一个很好用的集成平台。
你只需要在这个平台注册一个账号,即可刷POJ、ZOJ、HDU等等的题目。【你看HDU的排行。。。前几名全是虚拟用户就是这个平台的】

除此之外,建议有时间了也可以每周刷刷在线算法比赛,推荐两个吧
bestcoder
杭电搞出来一个算法比赛,持续了两三年,然后没赞助人气低搞不下去了。【想当年我应该是参加过这个比赛的第一场。。。成绩就不说了】
不过这也是国内为数不多的算法比赛。听说杭电现在有钱了,今年训练赛后会继续办这个比赛。可以关注一下

Codeforces
毛子开发的世界上最著名的比赛网站,很多大牛在上面刷比赛。
不过因为时间问题,一般都午夜凌晨才开始比赛,而且网络不好的话,网站也会打开不了。
有条件的话,建议上去刷刷题。

最后的最后

给学弟学妹一点福利吧
给你们找了一道题目,能把这道题做出来,【仅限一人】奖励一款steam游戏(100R以下)或等价物品~
这道题还有一个源远流长的故事呢~详情请咨询(方若宇)
hdu5242