Closed yo1995 closed 5 years ago
原帖:https://bbs.byr.cn/#!article/ACM_ICPC/97682
回答: 业余选手回答你一下。
是什么人在搞算法竞赛?他们中的大多数是如何入门这项事业的 大多数都是初中高中入的,有些学校有比较专业的老师教甚至曾经的出题人/NOI/IOI选手,有的只会一些基础算法和语法。 当然也有一些是大学才入的,但是比例不是很高。 一般对计算机都有一定的兴趣,对数学具有较高的天赋。 我高一时去的第一节课有120多人,整个机房都坐不下,第二节课就只剩下前两排可以坐满了,一个月后只剩下6个人。(虽然是个弱校,老师也并不专业只教语法)
为什么算法竞赛中的算法与本科数据结构和算法课中学到的东西看起来大相径庭? 真正打竞赛是要压榨性能的,因此数据结构一定要针对场景做优化,所以这些数据结构通用性上看就不如教学所使用的那些数据结构。 另外,这些数据结构也很难,让一般没入门的学生搞懂没必要。 算法也是同理。
为什么算法竞赛中问题的描述让人感觉很抽象?无法与常见的思维模式建立关联,但又不完全类似于数学定义的抽象 不太懂你说的抽象是什么意思,是用奇怪的生活中的场景去描述问题么?我觉得这些场景一方面是增加趣味性,另一方面是防止你更快地套用以往刷过的题,提高难度/。数学语言的题很蠢啊,就像小学数学的应用题一样,不单是为了增加趣味的。 但是这些题又要严谨,不能让选手因为语文能力或者语言习惯产生误解(然而现实比赛中还是有很多误解),所以会使用一些nm之类的描述
为什么算法竞赛有很多oj,做竞赛的同学是如何搭建、使用、分类与看待这些oj的? 最开始是为了方便训练用的,后来发现放一些简单题上去可以训练一般学生的编程能力。 搭建的话有开源代码,自己找一下。
oj与acm的起源? 不知道。
为什么leetcode看起来与各种acm oj的题型存在差别? 因为leetcode的题来源于初学者使用的题库,与竞赛难度差不少,一般来说正确实现即可,性能一般不会压太狠,但竞赛往往会用一些数据来卡你的复杂度。 而且leetcode是会给你你错的数据,让你方便找自己的问题,但acm不同,只会告诉你一个结果,最常见的就是WA和TLE,想知道为什么错了自己猜。
刷题的目的是什么?动力是什么?通过题目训练后能获得怎样特别的提升与经历? 提高读题的速度、扩充题库、降低脑抽写bug的概率、提高debug的速度。 尤其是写bug这方面,写多了之后能明显感觉到自己怎么想的就可以实现出怎样的效果,而不用担心哪里写错了一个变量或者拼错了或者少个括号之类的。
普通人如何才能由浅入深理解acmer的语境?看许多acm相关的博客每个字都认识,放在一起却好似天书… 如果不打算入坑,那就不需要去看也不需要去理解,个人觉得没必要。 打算入坑的话,好好找个教练去参加训练赛,听多了题解就好了。
原帖:https://bbs.byr.cn/#!article/ACM_ICPC/97682
回答: 业余选手回答你一下。
是什么人在搞算法竞赛?他们中的大多数是如何入门这项事业的 大多数都是初中高中入的,有些学校有比较专业的老师教甚至曾经的出题人/NOI/IOI选手,有的只会一些基础算法和语法。 当然也有一些是大学才入的,但是比例不是很高。 一般对计算机都有一定的兴趣,对数学具有较高的天赋。 我高一时去的第一节课有120多人,整个机房都坐不下,第二节课就只剩下前两排可以坐满了,一个月后只剩下6个人。(虽然是个弱校,老师也并不专业只教语法)
为什么算法竞赛中的算法与本科数据结构和算法课中学到的东西看起来大相径庭? 真正打竞赛是要压榨性能的,因此数据结构一定要针对场景做优化,所以这些数据结构通用性上看就不如教学所使用的那些数据结构。 另外,这些数据结构也很难,让一般没入门的学生搞懂没必要。 算法也是同理。
为什么算法竞赛中问题的描述让人感觉很抽象?无法与常见的思维模式建立关联,但又不完全类似于数学定义的抽象 不太懂你说的抽象是什么意思,是用奇怪的生活中的场景去描述问题么?我觉得这些场景一方面是增加趣味性,另一方面是防止你更快地套用以往刷过的题,提高难度/。数学语言的题很蠢啊,就像小学数学的应用题一样,不单是为了增加趣味的。 但是这些题又要严谨,不能让选手因为语文能力或者语言习惯产生误解(然而现实比赛中还是有很多误解),所以会使用一些nm之类的描述
为什么算法竞赛有很多oj,做竞赛的同学是如何搭建、使用、分类与看待这些oj的? 最开始是为了方便训练用的,后来发现放一些简单题上去可以训练一般学生的编程能力。 搭建的话有开源代码,自己找一下。
oj与acm的起源? 不知道。
为什么leetcode看起来与各种acm oj的题型存在差别? 因为leetcode的题来源于初学者使用的题库,与竞赛难度差不少,一般来说正确实现即可,性能一般不会压太狠,但竞赛往往会用一些数据来卡你的复杂度。 而且leetcode是会给你你错的数据,让你方便找自己的问题,但acm不同,只会告诉你一个结果,最常见的就是WA和TLE,想知道为什么错了自己猜。
刷题的目的是什么?动力是什么?通过题目训练后能获得怎样特别的提升与经历? 提高读题的速度、扩充题库、降低脑抽写bug的概率、提高debug的速度。 尤其是写bug这方面,写多了之后能明显感觉到自己怎么想的就可以实现出怎样的效果,而不用担心哪里写错了一个变量或者拼错了或者少个括号之类的。
普通人如何才能由浅入深理解acmer的语境?看许多acm相关的博客每个字都认识,放在一起却好似天书… 如果不打算入坑,那就不需要去看也不需要去理解,个人觉得没必要。 打算入坑的话,好好找个教练去参加训练赛,听多了题解就好了。