ACM国际大学生程序设计竞赛(英文全称:ACM International Collegiate Programming Contest(ACM-ICPC或ICPC)是由美国计算机协会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。经过近30多年的发展,ACM国际大学生程序设计竞赛已经发展成为最具影响力的大学生计算机竞赛。赛事目前由IBM公司赞助。(百度复制的求不打)
ACM世界上历史最悠久的竞赛,也是最有趣的竞赛,更是计算机领域最不含水分的竞赛(纯电脑测评现场赛肯定参杂不了水分..)
可能会带有以下的问题:
1.其实也许会有这样的疑问,ACM和普通的程序设计到底有什么异同呢?
ACM中并不牵涉任何Windows的操作,也不能使用数据库之类的,侧重的是算法的设计,之所以使用黑框框是因为侧重点是算法,并不需要那些windows的操作,因为如果算法都能学的很好的话,其他的学起来会非常的轻松,所以ACM本身考查的内容就是程序设计中最难的内容。
2.学习算法的重要性
如果是写比较复杂的应用型程序,如果没有系统的学习一些算法,有时候写代码会觉得非常的吃力,感觉能写出来,却不知道怎么去实现,不知从何写起,这样就会导致开发变得吃分的费劲了,但是如果系统的学习过,无论是思维上,还是对代码的掌握能力,与没学过ACM的都会差距很大。
3.ACM的好处
首先,对思维的培养非常关键,甚至能当作是提高智商的工具,能使自己分析问题的能力大大增高,还能增加自学能力。对于就业来讲,ACM的奖牌更是被热捧,如果有ACM的经验或者拿过奖,很多公司都会很看重这个,如果成绩优异进腾讯阿里巴巴百度甚至谷歌微软都是可以的,每年这些公司都会举行算法的竞赛来选拔优秀的acmer。对于其他课程,比如线性代数,数据结构,离散数学,概率论等,在学完ACM之后将会比其他的同学用更透彻的眼光看待,因为书上的东西写的非常繁琐,而你在ACM中已经将书上的很多内容实战了许多遍,看待问题会有许多与其他同学不一样的眼光。
4.ACM只有计算机专业才能弄吗
答案肯定并不是,通过上面的内容就可以看出,想弄ACM只需要掌握极小的编程上的语法,更重要的是如何去使用。与其说ACM是一门学科竞赛,更不如说是电子竞技,每周都会有Bestcoder(简称BC)和Codeforces(简称CF)的算法竞赛,前者是中国本地的,后者是国外的,每周都有几个小时能与世界上最聪明的人同台竞技,这可能才是这门学科竞赛与众不同的更重要的一个原因。
5.到底要怎样学习ACM呢
对于大一的新生,现在先不用着急,可以先把C语言的基础语句打牢固,能熟练掌握数组,变量,输入输出,函数,循环,条件语句,表达式等,就可以开始进一步学习算法了。注意这里的掌握并不是看书,看书是学不到什么东西的,而是应该通过大量的练习,使自己产生一种程序的思维,能随手用这些知识写出程序解决相对非常简单的问题才行。然后,就可以开始看比较简单点的算法,可以通过看lrj的《程序设计竞赛入门经典》,进一步来入门,介意一开始不要学习与自己实力相差太远的内容,这样可能会气馁;可以找一个小伙伴一起刷题,遇到难题一同解决,不要还没开始就想着放弃,更能找学长学姐一起讨论问题,共同解决。做题更重要的不是刷数量,而是领悟其中的思维,享受这种思维带来的感悟和惊喜。
好吧,讲了一堆废话,现在开始讲如何使用比较常用的一款编译器,Codeblocks13.12(群里有下载)
安装Codeblocks:这个非常简单,无脑式下一步即可,第一次打开Codeblocks可能会有选择编译器的选项,也全部直接点下一步即可。
如何创建工程:
打开Codeblocks后,点击左上角File->New->Project,选择Console application,选择C++(或C语言),点Next,输入工程名,并选择好保存地址,点Next,再点Finish,工程就算创建好了,接下来打开工程中的main.cpp文件,刚创好的工程默认是打开的,左边会有一列Management,然后在Project里会有你刚刚创建好的工程,在Sources里有一个main.cpp(如果是C语言就是main.c)的文件,双击打开即可,如果没有打开Management,可以按Shift+F2打开Management面板,上述操作如下图
我们在右边的代码框中写代码就行了。那么如何编译并运行代码呢,按F9,或者是上图中那个绿色向右的三角形上面还有一个齿轮的那个图标就行了,如果编译失败,就会提示错误,并在对应的行号旁边标上一个红色的小正方形,如下图
在Build messages里面就会有对应的编译错误的提示。如果Logs & others窗口被关闭了也不用着急,按F2可以显示窗口。
如果是第一次使用Codeblocks编译程序可能还会遇到The compiler's setup (GNU GCC Compiler) is invalid这样的错误提示,原因是编译器的地址没有自动矫正,可以按照下面步骤矫正,可以正常编译的可以跳过这一步。点上面菜单的Settings->Compiler->左侧的Global compiler settings->Toolchain executables,有个Auto-detect按钮,点一下,然后保存即可。
接下来讲Codeblocks常用的一些配置,首先Ctrl+鼠标中间滚动条可以缩放字体大小,可以把字体调成适合的大小。
在代码框中右键鼠标,有一个Format use Astyle的选项,是用来把代码自动格式化,把代码变得更好看。我喜欢符号中间空一个空格,左大括号不另起一行,可以这样设置Settings->Editor->Source formatter,然后Bracket style选择Java,点上面的Formating,把Insert space padding around operators和Don't break complex statements and multiple statements residing in a single line打勾保存即可,然后就可以试试效果了,代码格式如下(个人喜欢的风格)
对于强迫症来说,代码框中有时候会有波浪线,让人很不爽,可以点上面菜单的Plugins->Manage plugins,将SpellChecker Disable,然后确定保存
对于如何调试代码,F5设置端点,菜单中还有一个朝向右边的小红色三角形,那个是调试按钮(只有工程创建的代码才能调试,且文件目录中不能有中文),点那个运行就是调试运行了,遇到断点就会暂停,在那个小红色三角形的右边一些有个Debugging windows,里面有Watches,断点暂停后,可以在这里查看此时各个变量的值。
以上就是Codeblocks所有可能用上的内容了。。
好了,配置好了代码编辑环境,现在来讲oj(online judge)的原理。
/*未写完待续*/