
文章图片

想要入门ACM , 首先你要有一定的编程基础 , 一般国内的ACM选手都是用C++的 , 所以C++的基本语法你应该有所了解 。
1、库函数的了解
包括但不限于这些库(头文件):基本输入输出 如cstdio iostream , 以及一些从C的库弄过来的像cstring cctypecmath等库 , 具体可以随便百度一个人的代码 , 然后看看他的头文件
2、基础知识
如int的最大值是多少?int占多少内存?逻辑运算 , 循环等 , 不一一赘述 。 值得一提的是位运算 , 应当了解电脑中数据的存储方式 , 很多时候利用位运算帮助做题非常重要 , 如树状数组的lowbit , 状压DP , 快速幂等 , 每次我看到这些的时候都深深的感受到二进制的神奇 。
3、C++ STL:非常有用的STL 如algorithm vector list set stack queue map等 , 对于STL的学习 ,
4、Java基础
个人感觉Java并不常用 , 当然Java中的BigInteger类(高精度整数)是非常有用的 , 一般情况下 , 当别人苦逼的粘贴C++的大数类研究方法的时候 , Java可以十行代码优雅的解决问题 , 同时建议稍微学习一下BigDecimal类 。
语言使用C++ , 并尽量使用不符合工程代码规范的代码 , 只追求效率和队友能看懂即可 。 如果指针用的不熟 , 请尽量使用数组 , 避免莫名其妙的Segment Fault.请使用C++的\"普通\"语法以及STL , 什么C++的类的继承 , C++的模板类 , 命名空间的使用 , 一切能使得\"代码更加长更加好看更加看着舒服\"的做法都是在浪费宝贵的5小时上机时间 。
5、时间复杂度和空间复杂度的计算
时间复杂度是一个非常重要的概念 , 相同的问题 , 有的人给出的方法需要1s , 有的人给出的方法需要1h , 那必然是1s的方案在时间方面更优 。
空间复杂度同理 , 如果空间很大 , 用不完 , 可以考虑使用空间换取时间的方式 , 很多算法都是以这个为前提的 。
在icpc中一定要记住 , 思维能力和直觉是acm能力的核心驱动力 , 在思维能力达到一定层次以后 , 算法的学习能力也自然而然上来 。 而C++相对于C , 在输入输出流上的封装大大方便了我们的操作 , 同时降低了出错的可能性 , 并且能够很好地实现标准流与文件流的切换 , 方便了调试的工作 。
【华为|ACM 的正确入门方式是什么?】C++的另一个支持来源于标准模版库(STL) , 库中提供的对于基本数据结构的统一接口操作和基本算法的实现可以缩减我们编写代码的长度 , 这可以节省一些时间 。
- 苹果|华为新一代“小方表”来了:Watch FIT 2正式官宣
- 早报:华为P50 Pocket新色预售 百度世界大会定档
- 京东|裁员不忘膈应人,这家互联网大厂送的离职礼物恶心到我了!
- ZOL科技早餐:华为千元手表官宣,腾讯QQ回应大规模盗号
- iPhone14|准大学生的数码装备推荐
- 有人觉得中暑就是热出来的,吃一些退烧药就好了,这种做法 蚂蚁庄园今日答案6月28日
- 浮甘瓜于清泉,沉朱李于寒水”描述的是什么场面 蚂蚁庄园今日答案6月28日
- 个头大的车厘子比小樱桃营养价值更高,对吗 蚂蚁新村6月28日答案最新
- 位于广东省阳江市的海陵岛自然资源丰富,景色优美,该岛没有 神奇海洋6月28日答案
- 哪种水果横着切开像星星的形状 蚂蚁庄园今日答案6月29日
