ACM/ICPC 比赛生涯总结+经验分享_如何提高icpc成绩-程序员宅基地

技术标签: ACM-ICPC训练题解  

ACM/ICPC 比赛生涯总结+经验分享

1.获奖经历

时间 比赛 奖励
大一下 ACM陕西省赛 打铁
大一下 CCCC 团队二等奖
大二下 ACM/ICPC全国邀请赛 银奖
大二下 CCCC 团队特等奖
大三上 ACM/ICPC区域赛沈阳站 铜奖
大三上 ACM/ICPC区域赛南宁站 银奖
大三上 ACM/ICPC EC-Final上海 铜奖
大三下 CCCC 团队特等奖
大三下 ACM/ICPC全国邀请赛 金奖
大三下 ACM/ICPC多省宁夏 金奖
大四上 CCPC吉林 银奖
大四上 ACM/ICPC区域赛南京站 银奖
大四上 ACM/ICPC区域赛北京站 金奖
大四上 ACM/ICPC EC-Final西安 银奖

2.写在前头

我也算是打了将近3年的ACM/ICPC这个比赛了.在准备这个比赛的过程中,学习到了很多东西,也感觉到人与人之间的巨大差距.我感觉自己并不是一个有竞赛天赋的人,能坚持到最后拿到区域赛金牌,完全就是时间堆砌出来的.

3.训练经验

ACM/ICPC是一个团队协作的比赛,队友之间配合默契显得尤为重要.比赛中所涉及的知识点非常多,对于一个像我一样的普通人,也不可能做到面面俱到.因此, [ 1 ] [1] [1]这需要队伍里每个人都有自己擅长的一方面,大家知识点的并集要能覆盖到比赛的大部分内容,这样的话比赛中就很少能遇到大家都不会的知识点而造成目目相觑的尴尬处境.当然也不是说每个知识点只需要一个人来学就好了. [ 2 ] [2] [2]要保证会的知识点里面,每个知识点至少要队里2个人都会,在遇到这种题的情况,一个人想出做法来之后,可以与另一方沟通,两方都觉得可行的时候再写,避免想出假算法.

我认为训练分为2部分.

  1. 个人训练.目的是为了学习新算法,巩固自己的知识点.
  2. 团队训练.目的是为了模拟赛场环境,进行团队磨合,熟悉题目套路.

个人训练

对于个人训练来说,就我的训练过程来说,分为以下几个阶段.

入门阶段

这一阶段应该从书本看起,我当时看的书是<挑战程序设计竞赛>,也就是所谓的白书.还有刘汝佳的经典红书.我更偏向于看白书,我觉得白书写的更好一些.

当学习完<白书>以后,如果书中的内容大部分都摸透了,这表明比赛题目的很多常见套路你也都学会了,那么你至少也是区域赛铜牌的水平了.

在这一阶段跟着白书练练poj题库.
以下是我在poj上的过题记录.

在这里插入图片描述

提高阶段

入门以后,各种经典专题你都略知一二了,并且你觉得自己能力比刚入门的时候提升了很多,并且跃跃欲试想要打区域赛了.

此时你已经不需要再看书了,取而代之,你应该多刷一刷各种专题.提升自己的知识,比如,你可以去Vjudge上拉几套kuangbin专题训练系列,比如动态规划,搜索呀之类的东西.
在这里插入图片描述
在这里插入图片描述
当然你也可以到洛谷试练场的提高历练地去刷专题啦.
在这里插入图片描述


在这里插入图片描述

你还要经常参加Codeforces上举办的比赛,这些比赛的题目质量大都不错,可以开阔你的思维,使脑子反应更快,更适应题型的变化.当你的rating到1900分的时候,说明你的水平也有很大的提升.
在这里插入图片描述

牛客网经常举办Wannafly挑战赛,还有一些ACM/ICPC赛制的在线训练赛,题目质量很不错,可以自己边刷边补题.

目前为止,你应该有了拿银的实力.

冲金阶段

在拿了几块银牌之后,你并不满足,你决定再拿一块金牌.于是你决定更加努力的训练,去学习一些更难的算法.并掌握这些算法,以期望在区域赛中做出至少一道金牌题.

比如后缀自动机,后缀数组,动态树,可持久化线段树,Splay,点分治,FFT,狄利克雷卷积,莫比乌斯反演…等等等等

那么此时,你可以刷洛谷的省选斗兽场.这些专题可以使你初步了解这些算法,某些情况下初步了解就够用了.平时比赛时候,你不能再遇见金牌题就避而远之,而是要花时间把它啃下来,因为你的目标是夺金.而你做题的时候要有意识的去做难题,简单题可以一掠而过,以节省时间.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

团队训练

团队训练是必不可少的.团队训练的时候最好模拟赛场的环境,一台电脑用来敲代码,其他的电脑用来看题.尽量不要直接复制板子,而是要像赛场一样,抄上去,这样就不会遇到比赛时候抄错板子的尴尬情形.不要因为是训练赛就放肆交题,丝毫不管罚时,这样会养成一个坏习惯.实际上罚时是很重要的,青岛3题从金到铜的惨状你们忘了吗?

提前分锅.谁谁谁看哪种类型题,提前约定好,每个人优先看自己擅长的方面,相当于做了一个最优匹配,这样使得每个人的输出可以达到最大化.

训练赛后一定要补题,总结,写写题解来加深印象.如果只训练不补题,那跟没训练没有任何区别,下次再出这样的题还是不会.

找个靠谱的队友也非常重要,你和你的队友必须同时重视这个比赛,愿意为这个比赛付出时间,这样你们才能打好这个比赛.

4.比赛经验

赛场其实是有很多小技巧的.

  1. 签到题不要马虎,不要因为简单,写完就直接交,多测几组样例,看看边界条件,确认无误后再交题也不迟.不要因为节省个几分钟弄了很多发罚时,那就得不偿失了.
  2. 读题.一道题至少要2个人分别读,相互之间确认过题意再开始做,比赛时候读错题是很要命的事情,相当于增加了无穷多的罚时.
  3. 快读.有的时候TLE了加上一个快读就过了,真的.
  4. 打表找规律.比赛的时候其实是有很多打表找规律的题目的,有很多题其实要想的话是很麻烦的,而打表的话往往会找出规律,写个公式一下就过了.
  5. 打表.ACM还有一类题是要用打表做的,通常表现为时间复杂度较高,正常情况下需要跑个10s-100s不等.有的甚至要跑个半小时,但实际上所有的答案其实并不多,因此我们可以本机提前打表找出所有答案.
  6. 随机.有很多题其实题目出的不是很好可以被随机卡过去比如2018南京站的一道题.所以,遇到不会做的题的时候,想想这个题随机可不可以过,万一过了就非常之幸运了.
  7. (分块)模拟退火.这是一个非常神奇的算法,遇到求最优解的问题时候,不会做的时候多想想这个算法,往往会起到意想不到的效果.
  8. 猜结论.有很多题你的直观感觉答案可能有某种关联,但是你有证明不出来,此时你无妨大胆猜测它成立,试一试,万一就过了呢?比如2017南宁站的一道题考察Dilworth定理的题,我猜测出一个结论当场就过了.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_37517391/article/details/84098882

智能推荐

从图的邻接表表示转换成邻接矩阵表示_typedef struct arcnode{int adjvex;-程序员宅基地

文章浏览阅读1.1k次。从图的邻接表表示转换成邻接矩阵表示typedef struct ArcNode{ int adjvex;//该弧指向的顶点的位置 struct ArcNode *next;//下一条弧的指针 int weight;//弧的权重} ArcNode;typedef struct{ VertexType data;//顶点信息 ArcNode *firstarc;} VNode,AdList[MAXSIZE];typedef struct{ int vexnum;//顶点数 int _typedef struct arcnode{int adjvex;

学好Python开发你一定会用到这30框架种(1)-程序员宅基地

文章浏览阅读635次,点赞18次,收藏26次。14、fabric是基于Python实现的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括命令执行,文件上传,下载及完整执行日志输出等功能。7、pycurl 是一个用C语言写的libcurl Python实现,功能强大,支持的协议有:FTP,HTTP,HTTPS,TELNET等,可以理解为Linux下curl命令功能的Python封装。Scipy是Python的科学计算库,对Numpy的功能进行了扩充,同时也有部分功能是重合的。

Ubuntu中anaconda图形化界面的使用_ubuntu安装anaconda后怎么运行图形化节目-程序员宅基地

文章浏览阅读4.9k次,点赞3次,收藏25次。看网上教程,跟着配置,然后装完anaconda之后,大家都继续安装pycharm,然后傻吊的以为Ubuntu下的anaconda是没有图形化界面的,只有win下面 装完anaconda之后,可以直接在jupyter下面写代码今天突然发现Ubuntu下anaconda也是有图像化界面的$ conda --version /* 查看版本 */$ conda create --name my_en..._ubuntu安装anaconda后怎么运行图形化节目

深度学习RNN-程序员宅基地

文章浏览阅读771次,点赞22次,收藏11次。只记得我在一个昏暗潮湿的地方喵喵地哭泣着。——夏目漱石《我是猫》到目前为止,我们看到的神经网络都是前馈型神经网络。(feedforward)是指网络的传播方向是单向的。具体地说,先将输入信号传给下一层(隐藏层),接收到信号的层也同样传给下一层,然后再传给下一层……像这样,信号仅在一个方向上传播。虽然前馈网络结构简单、易于理解,而且可以应用于许多任务中。不过,这种网络存在一个大问题,就是不能很好地处理时间序列数据(以下简称为“时序数据”)。

Rsync数据复制——本地数据传输_rsync本地拷贝-程序员宅基地

文章浏览阅读2.5k次。1本地数据传输类似cp的复制,实现文件,目录的增量复制。#语法模式rsync命令 参数 src源文件/目录 dest目标文件/目录1.本地文件复制# 复制hosts文件[root@chaogelinux ~]# rsync /etc/hosts /tmp/2.复制目录内容-r, --recursive 对子目录以递归模式处理# 复制/data下所有内容到/tmp[root@lb01 ~]# rsync -r /data/ /tmp/# 复制/data整个文件夹到/tmp_rsync本地拷贝

随机密码约瑟夫环_py约瑟夫环问题n,k,m要求由键盘输入值,每个人持有的密码随机生成。 2、每个函数完-程序员宅基地

文章浏览阅读1.4k次,点赞3次,收藏11次。约瑟夫环问题: 问题描述:设有编号为1,2,3……n的n个人顺时针方向围坐一圈,每人有一密码(正整数)。开始时给出一初始密码m,从编号为1的人开始报数,报m的人出列;以后将出列者的密码作为新的m,从顺时针方向紧挨着他的下一个人开始报数……直至所有人出列。试编算法,求出出列顺序。要求:用不带头结点的单向循环链表实现从键盘输入n,m各人的密码由计算机随机产生(1~10的正整数,也可以自定义_py约瑟夫环问题n,k,m要求由键盘输入值,每个人持有的密码随机生成。 2、每个函数完

随便推点

AHAS arms调用链查询中,接口实际耗时和监听耗时差异在什么地方?_arms调用链路耗时看不懂-程序员宅基地

文章浏览阅读109次。监听耗时仅代表了 AHAS ARMS Listener(即调用链收集器)在收集并处理当前请求的调用信息时所需要的时间。它不包括网络传输、处理请求、执行操作、处理响应等其他阶段的时间,仅代表 Listener 所需的时间。通常这个时间会很短,只有几毫秒甚至更短。接口实际耗时包括了整个请求/响应周期中的所有时间,包括网络传输、处理请求、执行操作、处理响应等阶段消耗的时间。它代表了该请求在客户端发起到最终服务器响应完成所花费的总时间。_arms调用链路耗时看不懂

常见的Web应用的漏洞总结(原理、危害、防御)_web 应用中常见的漏洞及其危害有哪些-程序员宅基地

文章浏览阅读2.5k次。一、 SQL注入1.原理:SQL注入就是把SQL命令插入到Web表单然后提交到所在页面请求(查询字符串),从而达到欺骗服务器执行恶意的SQL命令。它是利用现在已有的应用程序,将SQL语句插入到数据库中执行,执行一些并非按照设计者意图的SQL语句。2.原因:根据相关技术原理,SQL注入可以分为平台层注入和代码层注入。前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入..._web 应用中常见的漏洞及其危害有哪些

离散数学——命题逻辑_离散数学命题逻辑-程序员宅基地

离散数学中的命题逻辑,包括命题的表示和联结词的运用,推理理论和常用的证明方法,如真值表法和直接证明法。还介绍了附加前提证明法或CP规则。

Spring Expression Language(SpEL)-程序员宅基地

文章浏览阅读8.6k次。Spring Expression Language(SpEL)spring的一种表达式。用来动态的获取,值、对象等。 样式: #{ …} 使用既定的规则放置在花括号中。式中的规则得以运行,可以反馈结果。理论上可以返回任何类型。 说说两种方式去设置SpELAnnotation注解。@Value()方便快捷。 你可以在里面方式任何符合SpEL规范的语句,并把它的返回值注..._spring expression language

ansible最大并发_通过这7种方法来最大程度地提高Ansible技能-程序员宅基地

文章浏览阅读1.7k次。ansible最大并发 Ansible是一种功能强大的无代理(但易于使用且轻巧)的自动化工具,自2012年推出以来一直稳步流行。这种流行在一定程度上是由于其简单性。 默认情况下,Ansible的最基本依赖项(Python和SSH)几乎在所有地方都可用,这使得Ansible可以轻松用于各种系统:服务器,工作站,Raspberry Pi,工业控制器,Linux容器,网络设备等。 Ansible可..._ansible 提升 高并发

Barcode Reader在45毫秒内实现条码识别-程序员宅基地

文章浏览阅读479次。应我的客户要求,需要找到一款可以在极短时间识别二维条码的软件以应对他们现在极其迅速的货品入库需求。正好听说过一款Dynamsoft Barcode Reader的开发包,根据其官网介绍最新版对条码检测速度比以前的版本快2倍以上。根据对Dynamsoft Barcode Reader8.8SDK包拆解,其中含了JavaScript Package /.NET Package /C/C++ Package /Python Package /Java Package /iOS Package /A..._barcode reader