DataKing Asked:2020-10-30 05:06:48 +0000 UTC2020-10-30 05:06:48 +0000 UTC 2020-10-30 05:06:48 +0000 UTC 奥数编程如何发展?[关闭] 772 最近,我对奥林匹克编程很感兴趣。 我在我的第一年。 我已经学习了语言的基础知识和简单的算法。 但我不知道如何进一步发展。 教什么? 在哪里教? 在哪里可以参加? 有什么课程吗? 有什么论坛吗? 如果有人可以提供帮助,我将不胜感激。 c++ 5 个回答 Voted Best Answer Zealint 2020-10-30T13:51:15Z2020-10-30T13:51:15Z 我将发表我的看法,因为多年来我一直参与奥林匹克运动会,并且是世界编程锦标赛的参与者(第 19 名)。现在我是一个相当狭窄领域的程序员数学家,但我作为国际专业人士拥有这个领域。如果我没有及时跳出奥林匹克竞赛之针,我就不可能成为如此专业的人。 首先你必须明白,奥林匹克是一场比赛。它很有用,培养了一些有用的编程技能和重要的优化能力。当我 13 年前停止玩这个游戏时,我很惊讶我比任何其他程序员都好得多,我可以编写他们甚至无法想象的快速高效的代码(当涉及到复杂的任务时)。但这场比赛的主要内容是准时出发。在某个美好的时刻,您必须了解饱和点已经到来,然后开始退化,而不是发展。你开始工作的不是发展你的技能,而是磨练竞争技能以达到完美,这在实际工作中是不需要的,甚至是有害的。 第二:奥林匹克不能解决需要超过 5 小时时间的问题。不管我教了多少,我从来没有遇到过一个在奥赛中取得成功,同时又能解决复杂科学问题的人。他们已经习惯了,你可以写一些刚刚好的代码,几乎100% 的普通程序员都写不出更高效的代码,这就足够了。但是不,在科学计算中,有些任务需要几个月的艰苦工作才能完成,比如“写 - 擦除 - 再写”,这个循环可以持续数十次迭代,你必须应用那些不需要的技术奥林匹克运动会。他们不知道该怎么做。而且,可怕的是,他们不能强迫自己从游戏中重新学习艰苦的工作。 第三:奥赛参赛者无法编写称职的工业代码。他们可以被教导这一点,但并不总是奏效。是的,他们的代码在效率方面非常好,他们觉得代码是他们身体的一部分,并且知道它将如何工作。他们中的许多人甚至没有在代码中犯错——它立即启动并正常工作(13 年前我就是这种情况,我在“记事本”(没有加号)中编写了家庭锻炼的代码,它立即编译并工作没有错误,你甚至可以不检查,但这个技能是不需要的,很快就会丢失)。但是有一个问题:这段代码对其他人来说是无法理解的,它的结构不是很容易理解,以便将代码的一部分替换为另一部分,通常无法维护,只能删除再写一次。 第四:从第二点和第三点得出一个重要的细节——在奥林匹克竞赛的同时,你需要解决具有实际意义的实际问题。这些可以是游戏(根据游戏开发规则是强制性的,不是自制的),可以是科学计算(必须根据您工作的科学实验室的规则),可以是工业任务(根据 ALL工业代码和软件开发规则)。只有这样,你才不会单方面发展,也不会在职业生涯中受苦。 第五。不要陷入恶魔主义,不要试图羞辱没有通过奥赛的兄弟。他们永远不会编写任何 Ford-Fulkerson 算法以使其快速正确地运行,他们的头脑中没有 70-100 种算法可以在几分钟内快速输入,他们甚至没有听说过最大流量是多少,并且你知道 15 种搜索算法。这导致一种崇高和重要的感觉。事实上,你必须明白一个主要的事情:在现实生活中,如果你不知道如何解决实际问题,你就是无用的垃圾。例如,如果您想羞辱不知道什么是动态编程的人,请记住这一点。 第六。你作为一名奥林匹克运动员的发展必须是不断的,你不能停止。一定要参加奥林匹克程序员的夏令营,现在有很多,没有夏令营的时候,每天解决不同服务器的问题。在我们这个时代,acm.timus.ru 和 acm.sgu.ru 很流行,现在我什至不知道它们是否有效,但现在有很多其他选择:topcoder、codeforces (google)。没有费用,你的训练会很弱。无需对服务器进行日常培训(即使每天至少半小时) - 也是如此。 第七。一旦你意识到你已经达到了饱和点,在奥赛中的进一步增长只会导致速度和比赛技巧的发展,并且你已经了解了所有算法的经典基础,尽快离开那里。因为从这一刻开始,你作为一个实际的人开始退化。立即切换到实际工作,学习您在奥林匹克学生时无法学习的编程标准并承担实际任务。如果您忽略了并行执行此操作的建议,那么您将不得不重新培训几年。 第八。游戏以其竞争精神吸引您,奥林匹克运动会充满自豪感,并给您一种意义和特殊感。请记住,这是一种幻觉,一种消遣。这是一所学习如何感受代码和计算机、学习算法的好学校,但其他一切(奖品、名额、胜负、年轻女孩的观点)都是胡说八道。不要爱上她,你以后会很尴尬的。 无论如何,祝你好运,常识与你同在:) Максим Бончев 2020-10-30T13:47:20Z2020-10-30T13:47:20Z 这个问题被问到关于奥林匹克编程的发展,答案是关于它有多么无用,等等......我将回答这个话题。首先,你需要看水平。就个人而言,我一开始就在这个网站上与团队一起训练:https ://acmp.ru/ 。有很多简单的任务,你可以慢慢增加复杂性。有些任务可以在 YouTube 和 Internet 上找到。还要学习算法!在同一个站点上有训练算法,还有一个很好的算法站点:http ://e-maxx.ru/algo/ 。有图表,有字符串,有组合,还有你内心想要的一切。你可以在这里参加比赛:https ://codeforces.com/problemset. 以下是与奥林匹克运动会最相似的任务。首先,您可以在档案中找到最简单的复杂性。当您升级时,您可以尝试参加比赛。总的来说,Olympiad 编程有点像专业编程,但它会给你一个很好的算法基础和知识。当我们去参加奥运会时,总是有机会结识新朋友,而且很多 IT 公司都提供在家工作的机会。因此,这绝对是一种不会受到伤害的体验。所以不要听任何人的话,做你喜欢做的事)) Sheridan 2020-10-30T07:23:07Z2020-10-30T07:23:07Z 体育奥林匹克将帮助您成为一名运动员。数学奥林匹克将帮助你成为一名数学家。奥林匹克编程——不会帮助你成为一名程序员。爱好是的。作为书籍/游戏的替代品 - 是的。作为心灵的锻炼 - 是的。作为学习编程 - 不。代码的方法太不同了。奥运会和生产的目标相差太大。 因此,如果你想开发,我建议你参与 github、gitlab、bitbucket、sourceforge 等开放项目。通过这种方式,您将帮助社区,并获得团队合作的经验,并获得参与实际项目的经验。此外,如果雇主要求提供代码示例,他们会向他们展示一些东西。 Lex Marchenko 2020-10-30T09:49:09Z2020-10-30T09:49:09Z 恕我直言 如果你写作并想继续积极写作,那么我能给你的最好的建议 以及尽可能多地促进你的发展(纯粹是我的观点)就是写游戏。 从具有某种游戏逻辑的轻型控制台游戏开始, 然后开始研究图形库,这些库可以帮助 您逐渐更好地理解如何不仅可以使用 Windows、Linux 等下的控制台应用程序,还可以使用你个人会更愉快地看。 或者,从蛇、井字游戏、网球等开始。 就我个人而言,我是从SFML开始的,但也有很多选择,谷歌会帮你选择。 在这个过程中,如何更正确地编写你正在做的事情很可能会变得更有趣 ,然后就有可能更深入地挖掘模式。有很多书,有适合每个人的东西。 除此之外,您可以训练算法的技能,但您不应该尝试学习每一项, 因为。这样做几乎没有什么好处,而且大部分内容要么在您寻找解决问题的好方法时在实践中学习,要么根本不需要它,因为在大多数情况下您必须使用 ready - 制造的解决方案。 最主要的是不要在没有实践的情况下深入研究这些主题,因为。编程中的原始理论给出了非常小的输出,而如果没有实践,这一切很快就会被遗忘。 培训班 市场上的选择非常多,但总的来说,您可以观看 Yandex 同一Courser课程 的免费讲座,有很多东西要学。 Stepik 上关于多线程/套接字的课程对我来说似乎有用且有趣,在课程 结束后的某个地方又是免费的并且具有相当不错的任务水平。有用 如果你在大学的第一年,那么你已经可以在某种程度上开始发展的技能,对你来说非常有用,就像对程序员一样,阅读别人的代码。 20-30% 你可以简单地从帮助你的同学开始他的实验室开始,但由于某种原因这不起作用。试图理解他的代码(如果不是每个人都可以复制粘贴的话),你会逐渐地,但学会使用别人的代码。因为 在这个职业中,你经常不得不经常使用别人的代码,那么这样的技能将大大简化你的第一个和后续的代码。 而且,如果出现问题,千万不要偷懒去调试,而且还不清楚到底是什么坏了,首先尝试研究(如果你还没有研究过),然后运用你的调试技巧,找到问题所在程序中的邪恶根源。 附言 有点混乱,很可能我还会更正和补充,但总的来说,我祝你努力成功。 Qui-Gon Jinn 2020-10-30T05:22:48Z2020-10-30T05:22:48Z 我最喜欢的有编程任务的网站,你可以很好地提高你的水平,最重要的是,看到进步。 通过定期解决这些问题,您不仅可以为奥林匹克做准备,而且在您的学习和未来的工作中都会有很多东西对您有用。 https://www.codewars.com/ 另一个很酷的时刻,根据您的信息,该网站将找到与您在同一所大学学习的其他用户。你可以找到新朋友。 祝你好运!
我将发表我的看法,因为多年来我一直参与奥林匹克运动会,并且是世界编程锦标赛的参与者(第 19 名)。现在我是一个相当狭窄领域的程序员数学家,但我作为国际专业人士拥有这个领域。如果我没有及时跳出奥林匹克竞赛之针,我就不可能成为如此专业的人。
首先你必须明白,奥林匹克是一场比赛。它很有用,培养了一些有用的编程技能和重要的优化能力。当我 13 年前停止玩这个游戏时,我很惊讶我比任何其他程序员都好得多,我可以编写他们甚至无法想象的快速高效的代码(当涉及到复杂的任务时)。但这场比赛的主要内容是准时出发。在某个美好的时刻,您必须了解饱和点已经到来,然后开始退化,而不是发展。你开始工作的不是发展你的技能,而是磨练竞争技能以达到完美,这在实际工作中是不需要的,甚至是有害的。
第二:奥林匹克不能解决需要超过 5 小时时间的问题。不管我教了多少,我从来没有遇到过一个在奥赛中取得成功,同时又能解决复杂科学问题的人。他们已经习惯了,你可以写一些刚刚好的代码,几乎100% 的普通程序员都写不出更高效的代码,这就足够了。但是不,在科学计算中,有些任务需要几个月的艰苦工作才能完成,比如“写 - 擦除 - 再写”,这个循环可以持续数十次迭代,你必须应用那些不需要的技术奥林匹克运动会。他们不知道该怎么做。而且,可怕的是,他们不能强迫自己从游戏中重新学习艰苦的工作。
第三:奥赛参赛者无法编写称职的工业代码。他们可以被教导这一点,但并不总是奏效。是的,他们的代码在效率方面非常好,他们觉得代码是他们身体的一部分,并且知道它将如何工作。他们中的许多人甚至没有在代码中犯错——它立即启动并正常工作(13 年前我就是这种情况,我在“记事本”(没有加号)中编写了家庭锻炼的代码,它立即编译并工作没有错误,你甚至可以不检查,但这个技能是不需要的,很快就会丢失)。但是有一个问题:这段代码对其他人来说是无法理解的,它的结构不是很容易理解,以便将代码的一部分替换为另一部分,通常无法维护,只能删除再写一次。
第四:从第二点和第三点得出一个重要的细节——在奥林匹克竞赛的同时,你需要解决具有实际意义的实际问题。这些可以是游戏(根据游戏开发规则是强制性的,不是自制的),可以是科学计算(必须根据您工作的科学实验室的规则),可以是工业任务(根据 ALL工业代码和软件开发规则)。只有这样,你才不会单方面发展,也不会在职业生涯中受苦。
第五。不要陷入恶魔主义,不要试图羞辱没有通过奥赛的兄弟。他们永远不会编写任何 Ford-Fulkerson 算法以使其快速正确地运行,他们的头脑中没有 70-100 种算法可以在几分钟内快速输入,他们甚至没有听说过最大流量是多少,并且你知道 15 种搜索算法。这导致一种崇高和重要的感觉。事实上,你必须明白一个主要的事情:在现实生活中,如果你不知道如何解决实际问题,你就是无用的垃圾。例如,如果您想羞辱不知道什么是动态编程的人,请记住这一点。
第六。你作为一名奥林匹克运动员的发展必须是不断的,你不能停止。一定要参加奥林匹克程序员的夏令营,现在有很多,没有夏令营的时候,每天解决不同服务器的问题。在我们这个时代,acm.timus.ru 和 acm.sgu.ru 很流行,现在我什至不知道它们是否有效,但现在有很多其他选择:topcoder、codeforces (google)。没有费用,你的训练会很弱。无需对服务器进行日常培训(即使每天至少半小时) - 也是如此。
第七。一旦你意识到你已经达到了饱和点,在奥赛中的进一步增长只会导致速度和比赛技巧的发展,并且你已经了解了所有算法的经典基础,尽快离开那里。因为从这一刻开始,你作为一个实际的人开始退化。立即切换到实际工作,学习您在奥林匹克学生时无法学习的编程标准并承担实际任务。如果您忽略了并行执行此操作的建议,那么您将不得不重新培训几年。
第八。游戏以其竞争精神吸引您,奥林匹克运动会充满自豪感,并给您一种意义和特殊感。请记住,这是一种幻觉,一种消遣。这是一所学习如何感受代码和计算机、学习算法的好学校,但其他一切(奖品、名额、胜负、年轻女孩的观点)都是胡说八道。不要爱上她,你以后会很尴尬的。
无论如何,祝你好运,常识与你同在:)
这个问题被问到关于奥林匹克编程的发展,答案是关于它有多么无用,等等......我将回答这个话题。首先,你需要看水平。就个人而言,我一开始就在这个网站上与团队一起训练:https ://acmp.ru/ 。有很多简单的任务,你可以慢慢增加复杂性。有些任务可以在 YouTube 和 Internet 上找到。还要学习算法!在同一个站点上有训练算法,还有一个很好的算法站点:http ://e-maxx.ru/algo/ 。有图表,有字符串,有组合,还有你内心想要的一切。你可以在这里参加比赛:https ://codeforces.com/problemset. 以下是与奥林匹克运动会最相似的任务。首先,您可以在档案中找到最简单的复杂性。当您升级时,您可以尝试参加比赛。总的来说,Olympiad 编程有点像专业编程,但它会给你一个很好的算法基础和知识。当我们去参加奥运会时,总是有机会结识新朋友,而且很多 IT 公司都提供在家工作的机会。因此,这绝对是一种不会受到伤害的体验。所以不要听任何人的话,做你喜欢做的事))
体育奥林匹克将帮助您成为一名运动员。数学奥林匹克将帮助你成为一名数学家。奥林匹克编程——不会帮助你成为一名程序员。爱好是的。作为书籍/游戏的替代品 - 是的。作为心灵的锻炼 - 是的。作为学习编程 - 不。代码的方法太不同了。奥运会和生产的目标相差太大。
因此,如果你想开发,我建议你参与 github、gitlab、bitbucket、sourceforge 等开放项目。通过这种方式,您将帮助社区,并获得团队合作的经验,并获得参与实际项目的经验。此外,如果雇主要求提供代码示例,他们会向他们展示一些东西。
恕我直言
如果你写作并想继续积极写作,那么我能给你的最好的建议
以及尽可能多地促进你的发展(纯粹是我的观点)就是写游戏。
从具有某种游戏逻辑的轻型控制台游戏开始,
然后开始研究图形库,这些库可以帮助
您逐渐更好地理解如何不仅可以使用
Windows、Linux 等下的控制台应用程序,还可以使用你个人会更愉快地看。
或者,从蛇、井字游戏、网球等开始。
就我个人而言,我是从SFML开始的,但也有很多选择,谷歌会帮你选择。
在这个过程中,如何更正确地编写你正在做的事情很可能会变得更有趣
,然后就有可能更深入地挖掘模式。有很多书,有适合每个人的东西。
除此之外,您可以训练算法的技能,但您不应该尝试学习每一项,
因为。这样做几乎没有什么好处,而且大部分内容要么在您寻找解决问题的好方法时在实践中学习,要么根本不需要它,因为在大多数情况下您必须使用 ready - 制造的解决方案。
最主要的是不要在没有实践的情况下深入研究这些主题,因为。编程中的原始理论给出了非常小的输出,而如果没有实践,这一切很快就会被遗忘。
培训班
市场上的选择非常多,但总的来说,您可以观看 Yandex 同一Courser课程 的免费讲座,有很多东西要学。 Stepik
上关于多线程/套接字的课程对我来说似乎有用且有趣,在课程 结束后的某个地方又是免费的并且具有相当不错的任务水平。有用 如果你在大学的第一年,那么你已经可以在某种程度上开始发展的技能,对你来说非常有用,就像对程序员一样,阅读别人的代码。
20-30%你可以简单地从帮助你的同学开始他的实验室开始,但由于某种原因这不起作用。试图理解他的代码(如果不是每个人都可以复制粘贴的话),你会逐渐地,但学会使用别人的代码。因为 在这个职业中,你经常不得不经常使用别人的代码,那么这样的技能将大大简化你的第一个和后续的代码。
而且,如果出现问题,千万不要偷懒去调试,而且还不清楚到底是什么坏了,首先尝试研究(如果你还没有研究过),然后运用你的调试技巧,找到问题所在程序中的邪恶根源。
附言
有点混乱,很可能我还会更正和补充,但总的来说,我祝你努力成功。
我最喜欢的有编程任务的网站,你可以很好地提高你的水平,最重要的是,看到进步。
通过定期解决这些问题,您不仅可以为奥林匹克做准备,而且在您的学习和未来的工作中都会有很多东西对您有用。
https://www.codewars.com/
另一个很酷的时刻,根据您的信息,该网站将找到与您在同一所大学学习的其他用户。你可以找到新朋友。
祝你好运!