acm竞赛需要学什么知识(ACM 的正确入门方式是什么?)

想要入门ACM,首先你要有一定的编程基础,一般国内的ACM选手都是用C++的,所以C++的基本语法你应该有所了解。

1、库函数的了解

包括但不限于这些库(头文件):基本输入输出 如cstdio, iostream,以及一些从C的库弄过来的像cstring, cctype,cmath等库,具体可以随便百度一个人的代码,然后看看他的头文件

acm竞赛需要学什么知识(ACM 的正确入门方式是什么?)

2、基础知识

如int的最大值是多少?int占多少内存?逻辑运算,循环等,不一一赘述。值得一提的是位运算,应当了解电脑中数据的存储方式,很多时候利用位运算帮助做题非常重要,如树状数组的lowbit,状压DP,快速幂等,每次我看到这些的时候都深深的感受到二进制的神奇。

3、C++ STL:非常有用的STL 如algorithm, vector, list, set, stack, queue, map等,对于STL的学习,

acm竞赛需要学什么知识(ACM 的正确入门方式是什么?)

4、Java基础

个人感觉Java并不常用,当然Java中的BigInteger类(高精度整数)是非常有用的,一般情况下,当别人苦逼的粘贴C++的大数类研究方法的时候,Java可以十行代码优雅的解决问题,同时建议稍微学习一下BigDecimal类。

语言使用C++,并尽量使用不符合工程代码规范的代码,只追求效率和队友能看懂即可。如果指针用的不熟,请尽量使用数组,避免莫名其妙的Segment Fault.请使用C++的”普通”语法以及STL,什么C++的类的继承,C++的模板类,命名空间的使用,一切能使得”代码更加长更加好看更加看着舒服”的做法都是在浪费宝贵的5小时上机时间。

acm竞赛需要学什么知识(ACM 的正确入门方式是什么?)

5、时间复杂度和空间复杂度的计算

时间复杂度是一个非常重要的概念,相同的问题,有的人给出的方法需要1s,有的人给出的方法需要1h,那必然是1s的方案在时间方面更优。

空间复杂度同理,如果空间很大,用不完,可以考虑使用空间换取时间的方式,很多算法都是以这个为前提的。

acm竞赛需要学什么知识(ACM 的正确入门方式是什么?)

在icpc中一定要记住,思维能力和直觉是acm能力的核心驱动力,在思维能力达到一定层次以后,算法的学习能力也自然而然上来。而C++相对于C,在输入输出流上的封装大大方便了我们的操作,同时降低了出错的可能性,并且能够很好地实现标准流与文件流的切换,方便了调试的工作。

C++的另一个支持来源于标准模版库(STL),库中提供的对于基本数据结构的统一接口操作和基本算法的实现可以缩减我们编写代码的长度,这可以节省一些时间TG:li9047

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至QQ邮箱:3628405936@qq.com 举报,本站将立刻删除。
(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注