如何开始学习竞争性编程
什么是竞争性编程?
竞技编程是一项智力运动,取决于解决问题的技能、数学和编程知识。竞争性编程比赛通常每年举行一次。有些是为高中生举办的,如 IOI,海鲜种类贝壳类有些是为大学生举办的,如 ICPC,还有一些是为任何人举办的,如 google code jam 和 Facebook 黑客杯。
为什么要学习竞争性编程
即使您对参加竞争性编程竞赛不感兴趣,花一些时间解决问题也会真正帮助您:
- 掌握您选择的编码语言
- 它将帮助您在编码面试中做得更好
- 它可以帮助您进行逻辑思考并更好地解决您面临的问题。
在进入竞争性编程之前你应该学习的东西
- 英语——基本阅读技巧
我真的不知道学习英语的好资源,但我个人只是从看电影和玩游戏中学到的 - 触摸打字— 60 wpm
我建议你在解决问题的同时练习你的触摸打字,如果你不愿意参加比赛,那么根本没有必要练习一个好的网站是关键 - 数学- 代数和基本几何学足以开始
一个很好的资源是可汗学院,抢活动他们有很棒的教程,而且是免费的。如果你想认真地进入竞争性编程,你需要学习的不仅仅是代数和几何,但代数和基本几何足以让你前进。
其他数学领域包括:
* 概率
* 组合学
* 线性代数
* 数论
用于竞争性编程的编程语言
我推荐 C++,因为它速度很快,而且由于运行时间限制,一些最高级的问题只能使用 C++ 或 java 解决。如果你的目标是参加像 ICPC 这样的比赛,C++ 是必须的,因为评委有时不接受用 python 编写的问题(c++、java 和 python 是唯一允许的语言)。但是,如果您已经掌握了编程语言的知识,我建议您将其作为开始使用,因为一开始使用哪种语言并不重要。
如何学习 C++
您可以按照自己喜欢的任何方式学习 C++,这里有一些资源可以让您有一个良好的开端。
- 您可以使用免费代码训练营完成的YouTube 初学者基础课程获得基础知识
- 之后你可以在HackerRank的 C++ 轨道上做一些问题,直到你觉得你已经掌握了基础知识
- 如果你想获得更高级的知识,你可以使用Exercism C++ 轨道(我建议你结合解决其他网站的问题来这样做)
按顺序学习的竞争性编程主题
- 数据类型和运算符
- 状况
- 循环
- 嵌套循环
- 数组
- N维数组
- 复杂度分析和排序
- 职能
- 内置函数(如 sort、pow、min 和 max)
- STL(字符串、映射、队列、堆栈和链表等数据结构)
- 递归
- 按位运算和位掩码
- 数论
- 图论
- 动态规划
- 以及您在学习过程中会发现的更多主题
免费学习资源。
- Competitive Programmer's Handbook
这是一本由 Antti Laaksonen 编写的免费书籍,它将为您提供有关竞争性编程的所有算法和知识的指南 - Geeks for geeks
特别是算法列表 - 如果有一个你不理解的话题,你可以使用谷歌,你会发现无数的文章解释它
为有竞争力的程序员提供良好的 YouTube 频道
- Errichto He 是一个非常棒的 youtuber,他既解释了具体问题,也做关于算法和竞争性编程主题的教程。**
** - 科林·盖伦
- 可能还有很多,但这些是我看的
什么 IDE 用于竞争性编程?
如果您不使用 C++,您可以使用您喜欢的任何 IDE。如果您使用 C++,请使用任何带有 gnu 编译器的 ide,例如(代码块、clion 和 eclipse)。如果您是学生 clion 是最好的选择,因为它为学生提供免费许可证。我个人更喜欢代码块而不是 Eclipse,因为 Eclipse 设置是一个令人头疼的问题。只是不要使用 VISUAL STUDIO,因为它的编译器与 gnu 编译器有一些不同的规则(如果你愿意,你可以使用带有 gnu 编译器的 Visual Studio 代码,但它会减慢你的速度,因为你必须构建然后使用命令运行) .
解决问题的最佳站点(我在下面解释了如何使用每个站点)。
- 代码力量
- 在编码器
- 黑客等级
- 还有其他网站,如代码厨师和代码战争,但我个人从未尝试过这些网站,但人们说它们很棒。
如何不浪费时间解决问题。
一般问题:
- 给每个问题 30 分钟的试用时间。
- 如果您无法解决问题,请查看教程,然后尝试解决它。
- 如果你还是不能解决,看看别人的解决方案。
- 如果您仍然无法解决它,请搜索其主题(通常您可以通过阅读教程知道问题的主题是什么)并尝试理解它。
- 如果毕竟你仍然无法解决它,就跳过它并做另一个问题。
比赛:
- 先解决简单的问题,然后解决困难的问题,以最大限度地提高地位。
- 您可以通过排名了解哪些问题容易解决(解决问题的人越多通常越容易)。
- 最重要的是在比赛结束后始终解决(解决你在比赛期间无法解决的问题)。
- 要解决问题,请查看问题的教程/编辑然后尝试解决它。
一般提示:
- 尝试每天花一些时间进行竞争性编程,并尝试避免长时间的休息,因为真正的进步伴随着奉献。
- 永远不要放弃相信我一开始对我们所有人来说都很艰难,也许你认为自己太愚蠢了,也许你认为这只是天赋,但相信我所有有竞争力的程序员都会经历这个。
- 避免在阅读时陷入困境——一个好的规则是解决 90% 的问题,并在 10% 的时间阅读。因为解决问题是一种主要通过实践获得的技能。随着你进步和学习更多,阅读和教程的百分比会下降,直到你所做的 99% 将解决问题。
- 如果您遇到困难并且没有在诸如 stackoverflow、codeforces和topcoder 之类的公共论坛上提问,请尝试寻找愿意回答您问题的人。
黑客排名
开始练习使用 HackerRank 是明智的,因为它有各种级别的令人敬畏的问题、良好的用户界面和针对所有问题的惊人社论。我建议你从算法技巧和数据结构技巧上做题。
使用 At 编码器指南解决问题
At coder 比 code force 对初学者更友好,并且它比黑客级别有更多的高级问题。我认为
在代码强制习惯竞赛风格的问题之前在编码器上解决问题是一个不错的选择。
如何使用它。
- At coder table
这是一张有很多 at 编码器问题的表。 - 竞赛
Coder 定期举办竞赛,参加竞赛会对你大有帮助。
表的使用方法:
这是一个问题表,分为 8 个难度(A 到 H)。A是最简单的问题,H是最难的问题。
我建议你开始解决 A 问题,直到它们变得简单,然后逐渐增加难度。
比赛:
尝试尽可能多地参加比赛,一旦完成比赛,您必须尝试解决以前无法解决的问题。
使用 Code Force 指南解决问题
的优点和缺点:
就种类和问题难度而言,它是最好的网站,但它缺乏友好的用户体验,有时教程非常糟糕。
如何使用它:
- 当你发现一个问题时,把它的代码写在 ide 上。完成后单击提交,然后选择您的编译器并提交。
要解决什么:
- 您应该进入问题设置页面,从右侧选择难度 800-1000,然后按应用。
2.然后使用复选标记图标按最受欢迎的排序
\3. 继续解决,直到你觉得问题很简单,然后将难度增加 200(将是 1000-1200)。并重复此操作,直到您成为竞争性编程大师
如何查看其他解决方案:
- 转到问题页面。找出它在右边的哪个比赛。并点击它。
\2. 找到您的问题并按下蓝色的人形图标
\3. 使用状态过滤器并选择接受的判决和您使用的语言,然后应用
4.点击比赛状态码查看代码
比赛:
在代码力量中有很多竞赛,它们是一种非常好的练习方式。比赛分为3个组别。Div 1 是最难的,Div 2 是中级,Div 3 适合初学者。您应该参加尽可能多的比赛并尽力而为
恭喜你现在应该准备好了
现在您应该准备好开始,而不会迷失和不知道该做什么。如果您有任何问题,请随时发表评论,我会尽快回复。我希望本指南能帮助您了解该做什么以及如何开始解决问题。
如何开始学习竞争性编程相关推荐
- 令人难以置信的竞争性编程-您无需学习
Now that I have your attention with the post title, let me go in-depth on my views of competitive pr ...
- javascript编程题_如何开始使用JavaScript进行竞争性编程
javascript编程题 by Priyabrata Biswas 通过Priyabrata Biswas 如何开始使用JavaScript进行竞争性编程 (How to get started w ...
- 未来最有竞争力的编程语言_如何在2020年9月开始竞争性编程
未来最有竞争力的编程语言 Competitive programming is changing the industry hiring process drastically. Many Big C ...
- 入职顶级互联网公司,竞争性编程是必须的吗?Google code jam King赛前采访(附有视频)
主持人:你能告诉我一些关于你自己的事吗 受访者:就像我决定从事的竞争性编程一样,竞争性编程我不仅参加了那些比赛,高中时我在美国参加Google Code Jam,因为我进入了决赛,这是我生命中的一部分 ...
- 如何学习linux编程
如果想学习UNIX/LINUX的编程,<APUE>绝对经典的教材,加深一下功底,学习<UNP>的第二卷.这样基本上系统方面的就可以掌握了.如果继续网络编程,建议看<TCP ...
- 学习Java编程培训的书籍有哪些
学习java技术除了线上线下的培训学习,书籍的知识也是非常重要的,今天小编为大家整理的就是学习Java的一些书籍,Java书籍是程序员学习提升技能的重要学习渠道,通过书籍Java程序员可以学习当前流行 ...
- 学习Python编程开发可以从事的岗位有哪些?
Python编程技术在人工智能领域的发展有目共睹,很多人都想学习Python技术,而且从事Python开发,所从事的工作机会和工作岗位及工作内容可选择的余地很多,未来发展空间也很大.下面我们就来详细的 ...
- 【Java并发编程】一、为什么需要学习并发编程?
原因: 1.硬件的驱动与互联网发展之间的鸿沟越来越大. 2.多核的服务器在不断的发展. 3.大型互联网厂商的系统并发量轻松过百万,传统的中间件和数据库已经不能为我们遮风挡雨了,反而成了瓶颈所在. 如何 ...
- 零基础的你还在纠结怎么学习Python编程吗?
想入门学IT,但不知道从哪门编程语言开始学起的同学有很多,小编建议,在编程语言的选择方面,如果你有自己感兴趣的方向,那么就最好选择自己的兴趣,毕竟有兴趣才能有耐心学习. 如果你是零基础,又暂时没有明确 ...
最新文章
- 有什么作用_轴套有什么作用?
- mysql的槽_Mysql槽点 - MySQL及其它开源数据库 - ITPUB论坛-中国专业的IT技术社区...
- 亚洲首个无人船试验基地建于中国珠海,无人船或将助力南海巡逻
- DNS 案例1 案例5轮询
- cisco 反转多路复用的妙用
- linux(Ubuntu)系统解决校园网锐捷客户端联网问题
- html支持1080p,支持1080p全高清 实战英特尔WiDi 2.0
- 10.22~10.28一周经典题目整理(meeting,BZOJ4377,POJ3659)
- 手机怎么把游戏隐藏在计算机里,怎么把手机游戏投屏到电脑?
- 使用3g模块SIM5360E收发短信
- 中国石油大学《机械原理》第二次在线作业
- 优化 | 浅谈旅行商(TSP)的七种整数规划模型
- Fleck webSocket
- 餐厅预订系统如何选?餐厅预订系统推荐
- webService序列化xml 以及去掉删除<string xmlns =“http://tempuri.org/”>
- 基于python爬虫的岗位数据分析以拉勾网为例_爬虫小实例-拉勾网数据分析岗位...
- 01背包与完全背包(对比)
- MATLAB中柱形图的绘制
- python 数值运算 m op n_测验1 Python基本语法元素 (第1周)
- 新版汇编语言程序设计【课后习题答案】