首页 > 编程语言 >ACM算法竞赛入门和进阶指南

ACM算法竞赛入门和进阶指南

时间:2023-07-14 11:24:01浏览次数:64  
标签:竞赛 题目 比赛 入门 ACM 队伍 进阶

文章目录如下,将从以下八个方面展开,接下来进入正文。

一、ACM竞赛

ACM程序设计竞赛是三人组队赛,一场比赛5个小时,通常有10~13个问题,三人合力解决,比赛时三人只能使用一台电脑。

每年有多个赛站,但每人一年只能参加两场区域赛(不算邀请赛、省赛)。

二、入门方式

可以参考下方回答。

ACM 的正确入门方式是什么?3975 赞同 · 73 评论回答

三、书籍推荐

1、《挑战程序设计竞赛 第2版》

作者巫泽俊,是ACM-ICPC世界总决赛冠军。

个人感觉比下面的《算法竞赛入门经典-第2版》好入门一点,可能是因为图解多一点吧。

 

2、《算法竞赛入门经典-第2版》

竞赛选手常称,紫书。

我认识的竞赛选手大多都看过紫书,很多厉害的选手,刷了很多上面的习题。

 

3、《算法竞赛入门经典-训练指南》

配合紫书食用,里面很多UVA的题目,有的题目比较难。

四、算法博客

OI Wiki

OI Wiki 致力于成为一个免费开放且持续更新的 编程竞赛 (competitive programming) 知识整合站点,大家可以在这里获取与竞赛相关的、有趣又实用的知识。我们为大家准备了竞赛中的基础知识、常见题型、解题思路以及常用工具等内容,帮助大家更快速深入地学习编程竞赛中涉及到的知识。(来源于: OI Wiki)

五、刷题网站

1、Codeforces

世界上最大的刷题网站,每隔几天就会有一场比赛,参加人数非常多。

有两个场 div1 和 div2,div1 比 div2难。

一般比赛时间对国内选手不太友好,如果不能实时参加,也可以VP模拟。

同时因为每周都有几场比赛,网站积攒了大量的题目,也是一个巨大的题库。

cf 的 rating 系统可以作为训练、刷题效果的一个测试参考,但和考试一样,某一次的考试结果可能不太有参考意义。

来自某算法竞赛狂热爱好者的补充。

刚开始入门的时候我觉得我是一个人在沙漠里走,手里虽然拿着地图,但身边 缺乏参照物。接触到 cf 以后,看着自己涨涨跌跌跌跌的 rating,看着五颜六色的国旗感觉还挺有游戏体验的。

2、HDU/POJ/ZOJ

学校的OJ,我大一入学的时候刷的是杭电11页里面的100题,练习的C++语法。

HDU和POJ、ZOJ一样里面也有大量的经典题。

3、Atcoder

日本的刷题网站,平常也有比赛,但频率没有Codeforces高,里面题目质量也很高。

4、Virtual Judge

这个网站是一个OJ网站合集,大家可以在VJ做其他OJ的题目,并提交。

六、团队分工

基础的算法与数据结构,三个人都要会。

高阶难的知识点,可以进行分工。

我的个人建议是,一个高阶难的知识点,一个队伍至少有两个人掌握,这样比赛的时候,可以互相提供思路、帮忙debug。

七、组队训练

1、题目选择

可以选取以往的区域赛题目,在 Codeforces 的 GYM 中有很多国内和其他地区的区域赛题目。

下面提供如何选择一套题的方法,仅供参考。

找到一场比赛,在 common standing 中看看有没有国内的厉害的队伍 vp 过,可以作为选取的因素之一。

2、训练频率

不同水平队伍的不太一样。

目标是金牌的队伍,建议每周3~4次,考试周前除外。

大家可以根据队员时间合理安排。

3、赛前加练

赛前找一套题,三个人像比赛一样,用一台电脑训练。

题目不用找太难的,太难的会搞队伍心态。

目的是保持竞技状态。

4、赛后总结

赛后一定要总结,训练赛的目的发现问题。

问题包括但不限于:

  • 知识点
    • 做对的题,解决是不是最优的。
    • 做错的题,什么case没考虑到,还是解决有问题,...
    • 不会做的题,是所用的知识点没学过,还是没想到,...
  • 团队合作
    • 开题策略
    • 合理「换线」
    • 心态管理

5、赛后补题

赛后要将 做错的题、不会做的题,力所能及地进行补题。

对于不会做的题,努力走出舒适圈,去补题做那种稍微有点思路,但是没做出来的题。

三个人可以商量,分别补哪些题,合理分工。

最后可以将题解汇总到一个地方,可以复习,队伍其他人也可以学习一下。

PS: 之前有 ICPCCamp Wiki 大家可以参考强队的训练,赛后总结、题解、赛后补题。现在已经没了。

八、比赛策略

由于自己实力有限,此部分来源于超级厉害的选手。

1、前中期

尽量保证每道题都有人读过题,最好每道题有2个人知道题意。

基本上跟住榜就行了。

那种榜上零零散散有队伍过的题目,可以尝试非常规思路。

2、封榜之后

封榜之后,如果卡着2-3题,必须做出取舍,最多保留2题,最好1题。

封榜之后一切以求稳为第一要义。(适用于绝大多数金银铜队伍)

3、无题可做的局面

如果目前没有一道题会做,可以考虑2+1的模式,一个人逐个浏览题目,看看有没有有思路的。另外两个人集中讨论思考同一道题。

4、因地制宜

重要的是,根据自己队伍的情况,总结一些规律和经验,就是什么样的策略比较适合自己队伍的情况。

比如。

  • 自己队伍哪些知识点比较强,可以考虑优先做对应的题目。
  • 每个人擅长什么题。
  • 什么样的题适合放到前期、什么样的题适合放到后期。

5、什么样的情况下是策略有问题

当一个队伍感觉每场比赛 要是再多一个小时,自己就能多出1-2题的时候,就有可能是比赛策略有问题。

如果要是感觉自己再多一个小时,还是一样的结果,那就不是策略的问题。

 

最后,一切的比赛策略要建立在实力的基础上,实力不足,谈策略没有任何意义。

标签:竞赛,题目,比赛,入门,ACM,队伍,进阶
From: https://www.cnblogs.com/cinemaparadiso/p/17553200.html

相关文章

  • 从零玩转SpringBoot3-快速入门
    一、简介1.前置知识​ ●Java17​ ●Spring、SpringMVC、MyBatis​ ●Maven、IDEA2.环境要求环境&工具版本(orlater)SpringBoot3.1.xIDEA2023.xJava17+Maven3.5+Tomcat10.0+Servlet5.0+GraalVMCommunity22.3+NativeBuildTools0......
  • c#开发单击游戏快速入门
    1.4 创建并编辑C#脚本在Unity中,可以使用3种方式创建C#脚本文件,且新创建的脚本文件会显示在Project视图下,如下创建并编辑C#脚本C#游戏开发快速入门大学霸:q 在Unity中,单击Assets|Create|C#Script命令;q 在Project视图里,单击Create|C#Script命令;q 在Project视图里,单击鼠......
  • Python3+Django2实现后台管理系统入门
    Python3+Django2实现后台管理系统入门前言使用Django我们只需要做一些配置,就可以实现简单的后台管理系统,下面我们以新闻系统为例子来搭建后台。创建项目切换到工作空间,执行以下命令:django-admin.pystartprojectitstyle#进入itstyle文件夹cditstyle#创建newsApp......
  • 汇编入门-课程概要
    1.什么是机器语言?加:01000000减:01001000乘:1111011111100000除:1111011111110000 2.什么是汇编语言?     加: INCEAX                         01000000减:DEC EAX       ......
  • mysql进阶
    mysql高级1.存储引擎1.mysql体系结构 2.存储引擎简介a.存储引擎就是存储数据,建立索引,更新查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可以被称为表类型3.存储引擎的特点a.InnoDB:是一种兼顾高可靠性能的通用......
  • QT从入门到实战完整版 P18
    #include"mainwindownoui.h"#include<QMenuBar>#include<QToolBar>#include<QDebug>#include<QPushButton>#include<QStatusBar>#include<QLabel>#include<QDockWidget>#include<QTextEdit>Mai......
  • QT从入门到实战完整版 P17
    #include"mainwindownoui.h"#include<QMenuBar>#include<QToolBar>#include<QDebug>#include<QPushButton>MainWindownoui::MainWindownoui(QWidget*parent):QMainWindow(parent){resize(600,400);//重置窗口大小Q......
  • mongodb 入门 和 php示例
    内容太多了,感觉不好写,就写点入门的吧,其他参考参考_MonogDB中文网(mongodb.net.cn)虽然内容是机器翻译的,但也还好,基本能看. 相关概念: database数据库collection集合,相当于数据库表document文档,相当于数据记录行 dockerrun-d--namemongo-p27017:27......
  • hadoop eclipse插件的不错入门文章
    基于Eclipse的Hadoop应用开发环境的配置http://blog.sina.com.cn/s/blog_537770820100byho.html?retcode=0  Hadoop学习-7Eclipse运行hadoop(解决错误)http://sunjun041640.blog.163.com/blog/static/25626832201061751825292/  搭建基于Eclipse的Hadoop测试环境http://www.tech......
  • day118 - 基于xml管理bean的入门案例
    基于xml管理bean入门案例导入依赖<dependencies><!--基于Maven依赖传递性,导入spring-context依赖即可导入当前所需所有jar包--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId>......