网上有哪些比赛是适合ACM初级入门的人的呢

作者&投稿:蠹汤 (若有异议请与网页底部的电邮联系)
usaco适合acm初学者吗~

USACO开头还是不要去的好
上poj比较适合入门 不会的搜poj***(人气也很旺)

  刚刚接触信息学领域的同学往往存在很多困惑,不知道从何入手学习,在这篇文章里,我希望能将自己不多的经验与大家分享,希望对各位有所帮助。
  一、语言是最重要的基本功

  无论侧重于什么方面,只要是通过计算机程序去最终实现的竞赛,语言都是大家要过的第一道关。亚洲赛区的比赛支持的语言包括C/C++与JAVA。笔者首先说说JAVA,众所周知,作为面向对象的王牌语言,JAVA在大型工程的组织与安全性方面有着自己独特的优势,但是对于信息学比赛的具体场合,JAVA则显得不那么合适,它对于输入输出流的操作相比于C++要繁杂很多,更为重要的是JAVA程序的运行速度要比C++慢10倍以上,而竞赛中对于JAVA程序的运行时限却往往得不到同等比例的放宽,这无疑对算法设计提出了更高的要求,是相当不利的。其实,笔者并不主张大家在这种场合过多地运用面向对象的程序设计思维,因为对于小程序来说这不旦需要花费更多的时间去编写代码,也会降低程序的执行效率。

  接着说C和C++。许多现在参加讲座的同学还在上大一,C的基础知识刚刚学完,还没有接触过C++,其实在赛场上使用纯C的选手还是大有人在的,它们主要是看重了纯C在效率上的优势,所以这部分同学如果时间有限,并不需要急着去学习新的语言,只要提高了自己在算法设计上的造诣,纯C一样能发挥巨大的威力。

  而C++相对于C,在输入输出流上的封装大大方便了我们的操作,同时降低了出错的可能性,并且能够很好地实现标准流与文件流的切换,方便了调试的工作。如果有些同学比较在意这点,可以尝试C和C++的混编,毕竟仅仅学习C++的流操作还是不花什么时间的。

  C++的另一个支持来源于标准模版库(STL),库中提供的对于基本数据结构的统一接口操作和基本算法的实现可以缩减我们编写代码的长度,这可以节省一些时间。但是,与此相对的,使用STL要在效率上做出一些牺牲,对于输入规模很大的题目,有时候必须放弃STL,这意味着我们不能存在“有了STL就可以不去管基本算法的实现”的想法;另外,熟练和恰当地使用STL必须经过一定时间的积累,准确地了解各种操作的时间复杂度,切忌对STL中不熟悉的部分滥用,因为这其中蕴涵着许多初学者不易发现的陷阱。

  通过以上的分析,我们可以看出仅就信息学竞赛而言,对语言的掌握并不要求十分全面,但是对于经常用到的部分,必须十分熟练,不允许有半点不清楚的地方,下面我举个真实的例子来说明这个道理——即使是一点很细微的语言障碍,都有可能酿成错误:

  在去年清华的赛区上,有一个队在做F题的时候使用了cout和printf的混合输出,由于一个带缓冲一个不带,所以输出一长就混乱了。只是因为当时judge team中负责F题的人眼睛尖,看出答案没错只是顺序不对(答案有一页多,是所有题目中最长的一个输出),又看了看程序发现只是输出问题就给了个Presentation error(格式错)。如果审题的人不是这样而是直接给一个 Wrong Answer,相信这个队是很难查到自己错在什么地方的。

  现在我们转入第二个方面的讨论,基础学科知识的积累。

  二、以数学为主的基础知识十分重要

  虽然被定性为程序设计竞赛,但是参赛选手所遇到的问题更多的是没有解决问题的思路,而不是有了思路却死活不能实现,这就是平时积累的基础知识不够。今年World Final的总冠军是波兰华沙大学,其成员出自于数学系而非计算机系,这就是一个鲜活的例子。竞赛中对于基础学科的涉及主要集中于数学,此外对于物理、电路等等也可能有一定应用,但是不多。因此,大一的同学也不必为自己还没学数据结构而感到不知从何入手提高,把数学捡起来吧!下面我来谈谈在竞赛中应用的数学的主要分支。

  1、离散数学——作为计算机学科的基础,离散数学是竞赛中涉及最多的数学分支,其重中之重又在于图论和组合数学,尤其是图论。

  图论之所以运用最多是因为它的变化最多,而且可以轻易地结合基本数据结构和许多算法的基本思想,较多用到的知识包括连通性判断、DFS和BFS,关节点和关键路径、欧拉回路、最小生成树、最短路径、二部图匹配和网络流等等。虽然这部分的比重很大,但是往往也是竞赛中的难题所在,如果有初学者对于这部分的某些具体内容暂时感到力不从心,也不必着急,可以慢慢积累。

  竞赛中设计的组合计数问题大都需要用组合数学来解决,组合数学中的知识相比于图论要简单一些,很多知识对于小学上过奥校的同学来说已经十分熟悉,但是也有一些部分需要先对代数结构中的群论有初步了解才能进行学习。组合数学在竞赛中很少以难题的形式出现,但是如果积累不够,任何一道这方面的题目却都有可能成为难题。

  2、数论——以素数判断和同余为模型构造出来的题目往往需要较多的数论知识来解决,这部分在竞赛中的比重并不大,但只要来上一道,也足以使知识不足的人冥思苦想上一阵时间。素数判断和同余最常见的是在以密码学为背景的题目中出现,在运用密码学常识确定大概的过程之后,核心算法往往要涉及数论的内容。

  3、计算几何——计算几何相比于其它部分来说是比较独立的,就是说它和其它的知识点很少有过多的结合,较常用到的部分包括——线段相交的判断、多边形面积的计算、内点外点的判断、凸包等等。计算几何的题目难度不会很大,但也永远不会成为最弱的题。

  4、线性代数——对线性代数的应用都是围绕矩阵展开的,一些表面上是模拟的题目往往可以借助于矩阵来找到更好的算法。

  5、概率论——竞赛是以黑箱来判卷的,这就是说你几乎不能动使用概率算法的念头,但这也并不是说概率就没有用。关于这一点,只有通过一定的练习才能体会。

  6、初等数学与解析几何——这主要就是中学的知识了,用的不多,但是至少比高等数学多,我觉得熟悉一下数学手册上的相关内容,至少要知道在哪儿能查到,还是必要的。

  7、高等数学——纯粹运用高等数学来解决的题目我接触的只有一道,但是一些题目的叙述背景往往需要和这部分有一定联系,掌握得牢固一些总归没有坏处。

  以上就是竞赛所涉及的数学领域,可以说范围是相当广的。我认识的许多人去搞信息学的竞赛就是为了逼着自己多学一点数学,因为数学是一切一切的基础。

  三、数据结构与算法是真正的核心

  虽然数学十分十分重要,但是如果让三个只会数学的人参加比赛,我相信多数情况下会比三个只会数据结构与算法的人得到更为悲惨的结局。

  先说说数据结构。掌握队列、堆栈和图的基本表达与操作是必需的,至于树,我个人觉得需要建树的问题有但是并不多。(但是树往往是很重要的分析工具)除此之外,排序和查找并不需要对所有方式都能很熟练的掌握,但你必须保证自己对于各种情况都有一个在时间复杂度上满足最低要求的解决方案。说到时间复杂度,就又该说说哈希表了,竞赛时对时间的限制远远多于对空间的限制,这要求大家尽快掌握“以空间换时间”的原则策略,能用哈希表来存储的数据一定不要到时候再去查找,如果实在不能建哈希表,再看看能否建二叉查找树等等——这都是争取时间的策略,掌握这些技巧需要大家对数据结构尤其是算法复杂度有比较全面的理性和感性认识。

  接着说说算法。算法中最基本和常用的是搜索,主要是回溯和分支限界法的使用。这里要说的是,有些初学者在学习这些搜索基本算法是不太注意剪枝,这是十分不可取的,因为所有搜索的题目给你的测试用例都不会有很大的规模,你往往察觉不出程序运行的时间问题,但是真正的测试数据一定能过滤出那些没有剪枝的算法。实际上参赛选手基本上都会使用常用的搜索算法,题目的区分度往往就是建立在诸如剪枝之类的优化上了。

  常用算法中的另一类是以“相似或相同子问题”为核心的,包括递推、递归、贪心法和动态规划。这其中比较难于掌握的就是动态规划,如何抽象出重复的子问题是很多题目的难点所在,笔者建议初学者仔细理解图论中一些以动态规划为基本思想所建立起来的基本算法(比如Floyd-Warshall算法),并且多阅读一些定理的证明,这虽然不能有什么直接的帮助,但是长期坚持就会对思维很有帮助。

  四、团队配合

  通过以上的介绍大家也可以看出,信息学竞赛对于知识面覆盖的非常广,想凭一己之力全部消化这些东西实在是相当困难的,这就要求我们尽可能地发挥团队协作的精神。同组成员之间的熟练配合和默契的形成需要时间,具体的情况因成员的组成不同而不同,这里我就不再多说了。

  五、练习、练习、再练习

  知识的积累固然重要,但是信息学终究不是看出来的,而是练出来的,这是多少前人最深的一点体会,只有通过具体题目的分析和实践,才能真正掌握数学的使用和算法的应用,并在不断的练习中增加编程经验和技巧,提高对时间复杂度的感性认识,优化时间的分配,加强团队的配合。总之,在这里光有纸上谈兵是绝对不行的,必须要通过实战来锻炼自己。

  大家一定要问,我们去哪里找题做,又如何检验程序是否正确呢?这大可不必担心,现在已经有了很多网上做题的站点,这些站点提供了大量的题库并支持在线判卷,你只需要把程序源码提交上去,马上就可以知道自己的程序是否正确,运行所使用的时间以及消耗的内存等等状况。下面我给大家推荐几个站点,笔者不建议大家在所有这些站点上做题,选择一个就可以了,因为每个站点的题都有一定的难易比例,系统地做一套题库可以使你对各种难度、各种类型的题都有所认识。

  1、Ural:

  Ural是中国学生对俄罗斯的Ural州立大学的简称 ,那里设立了一个Ural Online Problem Set,并且支持Online Judge。Ural的不少题目算法性和趣闻性都很强,得到了国内广大学生的厚爱。根据“信息学初学者之家”网站的统计,Ural的题目类型大概呈如下的分布:


  题型
  搜索
  动态规划
  贪心
  构造
  图论
  计算几何
  纯数学问题
  数据结构
  其它

  所占比例
  约10%
  约15%
  约5%
  约5%
  约10%
  约5%
  约20%
  约5%
  约25%


  这和实际比赛中的题型分布也是大体相当的。有兴趣的朋友可以去看看。

  2、UVA:

  UVA代表西班牙Valladolid大学(University de Valladolid)。该大学有一个那里设立了一个PROBLEM SET ARCHIVE with ONLINE JUDGE ,并且支持ONLINE JUDGE,形式和Ural大学的题库类似。不过和Ural不同的是,UVA题目多的多,而且比较杂,而且有些题目的测试数据比较刁钻。这使得刚到那里做题的朋友往往感觉到无所适从,要么难以找到合适的题目,要么Wrong Answer了很多次以后仍然不知道错在那里。 如果说做Ural题目主要是为了训练算法,那么UVA题目可以训练全方位的基本功和一些必要的编程素质。UVA和许多世界知名大学联合办有同步网上比赛,因此那里强人无数,不过你先要使自己具有听懂他们在说什么的素质:)

  3、ZOJ:

  ZOJ是浙江大学建立的ONLINE JUDGE,是中国大学建立的第一个同类站点,也是最好和人气最高的一个,笔者和许多班里的同学就是在这里练习。ZOJ虽然也定位为一个英文网站,但是这里的中国学生比较多,因此让人觉得很亲切。这里目前有500多道题目,难易分配适中,且涵盖了各大洲的题目类型并配有索引,除此之外,ZOJ的JUDGE系统是几个网站中表现得比较好的一个,很少出现Wrong Answer和Presentation error混淆的情况。这里每月也办有一次网上比赛,只要是注册的用户都可以参加。

  说起中国的ONLINE JUDGE,去年才开始参加ACM竞赛的北京大学现在也建立了自己的提交系统;而我们学校也是去年开始参加比赛,现在也有可能推出自己的提交系统,如果能够做成,到时候大家就可以去上面做题了。同类网站的飞速发展标志着有越来越多的同学有兴趣进入信息学的领域探索,这是一件好事,同时也意味着更激烈的竞争。


  看看这篇文章对你有什么帮助!我也是ACM初学者!

  适合ACM初级入门的比赛:
  http://codeforces.com/,全部是英文,Div2的 A、B 题还是很适合新手的,每两周大概3次比赛,对应一个rating。
  http://bestcoder.hdu.edu.cn/,第二个是中国的,杭州电子科技大学做的一个比赛,每周六晚上7点,,新手的只能做1001(也就是第一题了),这个支持中文,题目中英文有。随便选择,新手刚开始不要太着急比赛(可以做几次训练下)然后可以学习相关专题。

  ACM-Association for Computing Machinery , 即美国计算机协会。
  ICPC-International Collegiate Programming Contest , 即国际大学生程序设计竞赛·。
  ACM国际大学生程序设计竞赛(英文全称:ACM International Collegiate Programming Contest(ACM-ICPC或ICPC)是由美国计算机协会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。经过近30多年的发展,ACM国际大学生程序设计竞赛已经发展成为最具影响力的大学生计算机竞赛。赛事目前由IBM公司赞助。
  

http://codeforces.com/
http://bestcoder.hdu.edu.cn/
第一个都是英文,Div2的 A B 题还是很适合新手的,,每两周大概3次比赛吧,,对应一个rating。
具体百度codeforces,了解相关规则。
第二个是中国的,杭州电子科技大学做的一个比赛,每周六晚上7点,,新手的只能做1001(也就是第一题了),,不过这个支持中文,题目中英文都有。。。随你选择,加油吧,,新手刚开始不要太着急比赛(可以做几次把握把握)然后可以学习相关专题。。

比赛的话可以去做CF(codeforces),不过这个比赛一般都是在晚上的,可能要熬夜。

可以先刷刷hdu oj上题目。
希望能够帮助到你,有什么问题欢迎追问。


大学生可以参加的竞赛有哪些?
2、挑战杯 挑战杯分为“中国大学生创业计划竞赛”和“全国大学生系列科技学术竞赛”两种竞赛,这两类竞赛会交叉轮流举办,一般作品的征集时间是从前一年的11月份到次年的3月份。3、全国大学生电子设计大赛 这类比赛会比较适合电类学生参加,电子设计大赛的形式也是给出题目,参赛者有四天三夜的时间解决问题,...

大学生可以参加比赛有哪些
4、全国大学生数学建模竞赛 全国大学生数学建模竞赛创办于1992年,每年一届,已成为全国高校规模最大的基础性学科竞赛,也是世界上规模最大的数学建模竞赛。比赛时间是每年的9月上旬左右,比赛地点在各个高校。比赛时间全国统一的,不可以与老师交流,可以在互联网查阅资料。5、中国“互联网+”大学生创业...

大学生参加的竞赛有哪些
大学生可以参加的竞赛有:1.中国“互联网+”大学生创新创业大赛。2.“挑战杯”全国大学生课外学术科技作品竞赛,挑战杯分为学术科技作品竞赛和创业计划大赛,每个比赛2年举行一次。3.“挑战杯”中国大学生创业计划大赛。4.ACM-ICPC国际大学生程序设计竞赛。5.全国大学生数学建模竞赛。6.全国大学生电子设计...

大学生可以参加的竞赛有哪些?
大学生可以参加的竞赛有:英语类1、「普译奖」全国大学生英语写作大赛1(1)、「普译奖」全国大学生英语翻译大赛这两项比赛举办的时间不长,比较容易得奖。分为初赛和决赛两场。2、全国大学生英语竞赛这个比赛是老牌的英语竞赛,竞赛对象为全国高校非英语专业所有年级本科生。初赛和决赛均由全国统一命题,...

大学生可以参加的竞赛有哪些?
以下是我参与过感觉很有价值的寒假准备的比赛,无论是综测奖学金、还是保研都很有帮助!1:全国大学生英语竞赛 时间:报名学校报名2022年3月15日前,校赛2022年4月17日左右,国赛暑假期间 准备:寒假刷真题,推荐圣才学习网 买真题难度在于题量大,需要寒假完整时间练习没领到资料的可以评论“想要”我私...

适合青少年参加的机器人比赛有哪些
机甲大师高校系列赛 RoboMaster 机甲大师高校系列赛(RMU, RoboMaster University Series ),是由大疆创新发起,专为全球科技爱好者打造的机器人竞技与学术交流平台。自2013年创办至今,始终秉承“为青春赋予荣耀,让思考拥有力量,服务全球青年工程师成为追求极致、有实干精神的梦想家”的理念,致力于培养与...

大学生有哪些值得参加的比赛?
这个很有意思,也是让大学生提前感受到创业压力的一种很好的比赛,大学生通过创业比赛获得生存的能力。大学生英语口语比赛。这是考验大学生英语水平的重要赛事,能参加这样的比赛,他的能力一定很出众,以后就业也更有优势。所以大学生在学校里一定要选择自己喜好的项目参加各种比赛,它能提高我们的水平。

适合大学生参加的创新创业大赛有哪些?
奖项介绍 全国评审委员会对各省(区、市)报送的参赛作品进行复审,评出参赛作品总数的90%左右进入决赛。竞赛决赛设金奖、银奖、铜奖,各等次奖分别约占进入决赛作品总数的10%、20%和70%;各组参赛作品获奖比例原则上相同。全国评审委员会将在复赛、决赛阶段,针对已创业(甲类)与未创业(乙类)两类作品...

有哪些设计比赛适合大学生参加的?
我制作的学院比赛的PPT 无论是师范生,还是非师范生,将来的工作都离不开PPT。因此在大学阶段通过积极参加PPT设计大赛,能够极大地提高我们将来工作的能力。2、海报设计大赛 海报设计是基于在计算机平面设计技术应用的基础上,随着广告行业发展所形成的一个新职业。旧时,海报是用于戏剧、电影等演出,活动的...

有哪些适合大学生参加的比赛值得分享?
我从翻译专业来分享一下,对于学语言的大学生的话,专业性的比赛还是有很多的,比如外研社的语言类比赛,在外研社旗下就有英语演讲大赛,英语阅读大赛,以及英语写作大赛。外研社的比赛也是含金量很高,从校级到省级到区级以及最后的国赛,都是层层选拔。单说外研社的英语演讲大赛,一定要提前几个月准备,各...

祁阳县13872592491: 可以在网上参加的ACM类竞赛都有你哪些 -
许肿枢芬: 每月一次或者多次的有topcoder, codeforce,当然还有各大OJ的月赛.年度的竞赛除了你所说的,还有google code jam, facebook hack cup,TCO, 今年还有金山西山居.可能还有其他的,可以关注网站acmicpc.info或者人人ACMDIY

祁阳县13872592491: ACM比赛的一些小问题 -
许肿枢芬: 我学ACM一年多了.我不是信息学院也不是和计算机沾边的专业.之所以喜欢ACM就因为喜欢.根据你的问题, 1:每年都有很多比赛,本校的校赛.其它院校的邀请赛.省赛.地区赛.topcoder.有道难题.百度杯.google挑战赛.有很多机...

祁阳县13872592491: 求一个适合大一 c语言 acm 刷题的平台 -
许肿枢芬: 可以先做hdu上的题,刚开始从2000题做,中文题比较多,之后可以提高难度看看英文题,acm的比赛大多数都是英文的,希望对你有所帮助.http://acm.hdu.edu.cn/listproblem.php?vol=1

祁阳县13872592491: 关于ACM竞技大赛 -
许肿枢芬: acm题都是追求效率的,java不用考虑 c必会,c++可选(c++可以用stl库) 英语好可以迅速了解题意,算是小小的优势吧 注重逻辑思维能力,很多大牛都不是计算机专业的,而是数学专业的 需要灵活运用 数据结构、算法(排序、剪枝、分治法...

祁阳县13872592491: ACM入门应当做什么?~~目的只是提高编程能力,不是参加神马省赛区域赛之类~~ -
许肿枢芬: 在我看来,就是去他官网上看试题然后自己做了提交,最好找几个有兴趣的同好一起讨论,因为ACM比赛一般都是3人一组的. 至于入门不入门,就做做比较简单的题目呗,然后再到网上搜搜有什么更好更有效率的办法. 其实编程能力的提高和ACM没有必然联系,编程思维的提高的确能通过ACM的练习有提高,但是以后你会发现,很可能你做的东西和ACM看重的算法和效率无关,这个时候其实ACM的帮助意义不大. 至于看书和动手,我的理解是,先动手,有不懂的就去看书,去上网查类似解决方案,这才是学以致用,印象会比较深刻. 另外,其实ACM没那么难,学好了上去露一手,获个小奖,对以后找工作蛮有帮助的.

祁阳县13872592491: 怎么准备ACM程序大赛? -
许肿枢芬: 原创哦~ 我的观点: 第一阶段:先刷水题,水题,就是几乎不牵扯算法.需要自己想方法解决. 这样的题,一是锻炼 逻辑思维和思维的严谨,二是锻炼代码能力(写的代码越来越长而错误越来越少,看别人很长的代码很快就能看明白对方的思...

祁阳县13872592491: 我想问一下ACM的比赛有哪些:我在重庆读大学,计算机系的,想去参加一些ACM比赛,但不知道重庆有哪些ACM比 -
许肿枢芬: 大学生程序设计竞赛ACM简介 ACM (Association for Computing Machinery) 成立于计算机诞生次年,是目前计算机学界中历史最悠久、最具权威性的组织,是推进信息技术专业人员和学生提高技巧的主要力量. ACM通过提供前沿技术信息和...

祁阳县13872592491: 有没有大学生可以网上报名的【计算机相关的大赛】,越多越好!优质答案有追加! -
许肿枢芬: ACM程序设计竞赛,这个大学里应该会有选拔赛吧 微软的编程之美挑战赛,较上面个简单点

祁阳县13872592491: 给大学生参加的关于计算机的竞赛有哪些? -
许肿枢芬: ACMTOPCODER...比比皆是我就参加了Topcoder比赛,本月底进行机赛~比赛报名: www.topcoder.com/westchinaTOPCODER官方网站.上面有详细的流程和须知创业设计大赛 最少两个人最多8个人一个团队 假想自己拥有一定份额的资金对...

祁阳县13872592491: 大学有哪些计算机比赛 -
许肿枢芬: 有ACM竞赛,Topcoder比赛,创新竞赛,计算机应用竞赛......其实大学里很多关于计算机的竞赛,只是举办单位不同,平常要多上网留意一下,有时学校里会张贴宣传海报.ACM是最权威的,顶级的,表现好的话可以参加国际比赛,此外数模竞赛也要用到编程,和ACM一样,学校一般是先校内比赛选拔优秀的学生,参加省级,国家级和国际比赛.还有大学生足球机器人,舞蹈机器人等等都要用到编程.除了编程,也有很多类型的竞赛,例如网页设计大赛,flash设计大赛等

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网