这篇就主要说一下个人感悟吧,虽然不是金牌选手,但还是希望多多少少能对后来者提供些帮助

1. 预备

省选到 NOI 的准备,就当讲讲故事。

省选考下来好像不是很行,本来退役记都写了一半了,结果发现省队最后一名苟进去了 awa 随后就是抛开一切准备 NOI。省选联考固然难,但做过 NOI2020 的线上赛,也知道 NOI 和省选毕竟不是同一个等级的,做足了心理准备。

与其他竞赛强校联合训练是准备 NOI 的主要方式,也就是一起打比赛,分享试题。省选时两天一次测试,现在几乎每天都考,训练强度直接翻了倍。每天上午打比赛,下午晚上补题;题目难度要向 NOI 靠拢,补题的难度不言而喻,基本上一天也就耗在了补题上。再像以前那样写长篇大论的博客总结试题是不现实的,所幸自己一直保留着「刷题记录」这种东西,记录每道题的主要算法,再对这道题根据自己的收获给出一个价值(是否需要复习、重做,或者重温思路);实际上到训练后期这种记录就足够了。

知道进入省队的消息后没过多久就去北京集训,这是我第二次长时间外培。其实外培和平时的训练区别就是“有一群人和你一起考试”,的确人多一些更有考场的感觉。到了外地,作息时间可能有 1h 左右的调整,需要先适应;不过更重要的还是适应考试环境。实话实说,外培讲课的效果其实并不比线上视频好,人太多根本不方便提问;一些人的解法可能和 std 不同,值得一听,虽然大多数时候是半懂的状态,但是至少还是要在脑海中留下一个印象——这道题可以这样分析。

做比赛碰到的算法大多数是学过的,就当是复习。能写的题就写,其实也是复习一些模板(在之后敲模板题的时候有些算法就可以 skip 了)。

偶尔也会碰到没学过的算法,听评讲肯定是听不懂的,还好有 OI-wiki 以及其他博客。到 NOI 的阶段,发现有一整块知识缺失是不可能的,多数没见过的算法都是一小点;如果没有冲金牌的目标的话,这种算法就把比赛题补了就合适了,再拓展练习的话,一是大概率不会碰到,二是很难把握算法精髓,NOI 肯定不会考板子,即使碰到也不容易想到正解。

教练有时会让我们研究一些论文,同样的道理,不需要大规模练习。

2. 练习赛

本来想在前文就顺带说了的,但是看起来得单列一节。

练习赛不仅是做题,还要练策略。练习赛需要重视,但是毕竟不是正式比赛,可以拿来做实验( ̄︶ ̄),比如听说一种策略是「拼了命也要做出第一题」,可以试一试然后死得很惨。

练习赛是模拟正式赛,但有一说一,和 NOI 差别肯定很大。NOI 试题有一个共同点是测试点分得特别细,练习题就很难有很细的部分分,而且还绑点╰(‵□′)╯。考下来分数肯定会集群,所以练习赛比较考验某一个思路的突破,以及实现的精细。不管怎么练,始终记住正式比赛啥都不会写的时候「部分分+乱搞」yyds。

多校联训总共六十多场比赛,越到后期越难,如果状态不佳,连续几场考爆是常有的事。听到家长说「看你们这些竞赛生都已经考麻木了」,实际上只有外人会这样认为。最后十场练习赛连续爆炸,每次考完看到自己的分数,觉得「可能就这样了,无所谓了」;但是中午躺在床上脑子里就只剩「真的无所谓了吗?凭什么我学了这么久,凭什么我都冲进省队了,还是考得这么差?」;摔东西、砸墙、长跑……独自一人发泄一通,似乎又好了,告诉自己「明天一定要 200+,再拿一次 rank1」。自言自语在人群中不太好意思,但一个人的时候久不必要隐瞒了。每次自己从「期望后的失望」中回复过来的时候就会想起一首歌:

给我 点时间就好

让我 安静地坠落

请不要担心我

并不需要太久

然后装作

没发生过

——《难过 233 秒》

大概就是这样吧。

终于在最后一次练习赛时,整个人放开了,啥都不管放开了考,得到了自己满意的名次。

3. 临考

NOI 就跟个夏令营一样,任务安排特别宽松,给了选手特别特别多的时间。

NOI 临考的时候最烦的是「不知道要干什么」,但是必须要找到事干,个人觉得劳逸结合是比较好的选择。

考前不需要太压抑自己,尤其是到了宿舍过后,一个人一直复习往往会把寝室弄得特别紧张,所谓内卷(´Д`)。喜欢玩游戏就玩,喜欢打牌就打,喜欢唱歌就唱(不要扰民⊙﹏⊙∥),只是每次 NOI 都把体育馆给占了,打球之类的基本上不太可能,而且夏天比较热。(这次 CCF 报道厅把乒乓球馆占了(ノ`Д)ノ)

有句话说的好:「劳逸结合是不错,但也别放松过头」[doge] 适当地卷有助于保持自己的状态。我复习主要是看自己的博客,还有把刷题记录挨个看,主要复习思路。NOI 不太可能撞题,所以复习重点在「怎样找到这道题的切入点」或者一些实现细节。

另外住在寝室里有个好处……如果是一个比较活泼的寝室(o゜▽゜)o,室友可能会在 Ta 发现某个神奇算法/思路的时候发出惊叹 awa 虽然嘴上说着「NOI 要是考这个算法,我 ***」实际上很有可能一奶一个准_(:з)∠)_

4. 考试

考前啥都不想,唱首歌就上路 awa

不管 CCF 又出什么幺蛾子导致比赛延时,反正比赛都是 5h。开考后先通览题,只要没有去年 NOI2020 Day2T2 那种玩意,差不多十几分钟就能了解大概题意。此外注意数据规模。

然后不管哪道题比较有思路,反正按顺序做,不会做就写部分分。NOI 大概是按难度排序的,所以留给前面的题的时间还是得多些。T1 如果能想出来,思考+写代码 2h 对于一个银牌选手并不过分;如果没啥思路,顶多 1h 过后必须写代码,能写多少写多少;2h 没调试出来,先保存着放一放,换 T2。T2 的策略和 T1 差不多,只是思考时间可以缩短一些,一定要给 T3 一些时间,哪怕是写暴力也可能花费一些时间。

至于 T3,还是那句话,如果不是冲金牌,开局就看部分分。考前学会了一个看部分分的方法——分栏看。T3 的部分分往往是把每个测试数据的信息挨个列出来,表格长得离谱(。_。),但是可以看它每一列的特殊性,比如一些点的 \(n\) 很小,一些点的 \(k\) 很小,一些点有特殊性质……

写完 T3,如果 T1 没写出来,现在就可以打回马枪了(反正我 Day1 就这么干的)。调试的时候如果没有合适的大样例就写对拍吧!比干瞪眼强多了。

考试结束前 15min,代码一存,检查:

  1. 文件目录,文件名,文件输入输出;如果你不确定代码放的位置,可以问工作人员;

  2. 数据规模,包括数组的大小和数据类型(long long);

  3. 编译:O2 和 C++11 开和不开都要测一测,应该以后都会开 C++11 但还是要看清楚;编译完测文件大小,MLE 和 CE 一样惨;开所有你记得的编译警告,尽管网上说只开 -Wall 就够了,但是似乎有些东西比如 -Wconversion 就需要单独开;

    除了开了 O2 警告你 scanf/printf/freopen 的返回值没使用这种屑警告,其他警告都要重视,尤其是:

    • 隐式类型转换;
    • void 函数可能木有返回值;
    • 位运算的顺序;
    • 变量重名(养成好习惯( ̄▽ ̄)")。
  4. 用文件输入输出测样例,eg:

    cd qi
    g++ -o qi qi.cpp -std=c++11 -O2 -Wall -Wextra -Wconversion -Wshadow
    cp qi1.in qi.in
    ./qi
    diff qi.out qi1.ans -w
  5. 检查代码里是不是还输出了中间变量,建议用 fprintf(stderr, "")/cerr 输出中间结果,最后直接搜索 fprintf/cerr 删掉就行了;

  6. 删掉代码里所有 assert,尽管你觉得只要 assert 挂了就会错,但是如果加了 assert 就肯定没戏,删了过后可能会出奇迹o(* ̄︶ ̄*)o

5. 结语

作为一个 OIer 的学习生活已经结束了,也仅能以一个退役学长的身份和后来者交流了。

自己瞎编了六个字送给现役或有意参赛的人:『慎始,笃行,善终』。

「DIARY」NOI2021 小结的更多相关文章

  1. spring cloud 入门,看一个微服务框架的「五脏六腑」

    Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 注:Spring Boot 简单理解就是简化 Spring 项目的搭建.配置.组 ...

  2. 从 Spring Cloud 看一个微服务框架的「五脏六腑」

    原文:https://webfe.kujiale.com/spring-could-heart/ Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构 ...

  3. 从 Spring Cloud 看一个微服务框架的「五脏六腑」(转)

    Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 本文将从 Spring Cloud 出发,分两小节讲述微服务框架的「五脏六腑」: ...

  4. 「MoreThanJava」机器指令到汇编再到高级编程语言

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  5. 「MoreThanJava」Java发展史及起航新世界

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  6. Python后端日常操作之在Django中「强行」使用MVVM设计模式

    扫盲 首先带大家了解一下什么是MVVM模式: 什么是MVVM?MVVM是Model-View-ViewModel的缩写. MVVM是MVC的增强版,实质上和MVC没有本质区别,只是代码的位置变动而已 ...

  7. 「译」JUnit 5 系列:条件测试

    原文地址:http://blog.codefx.org/libraries/junit-5-conditions/ 原文日期:08, May, 2016 译文首发:Linesh 的博客:「译」JUni ...

  8. 「译」JUnit 5 系列:扩展模型(Extension Model)

    原文地址:http://blog.codefx.org/design/architecture/junit-5-extension-model/ 原文日期:11, Apr, 2016 译文首发:Lin ...

  9. JavaScript OOP 之「创建对象」

    工厂模式 工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程.工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题. function createPers ...

  10. 「C++」理解智能指针

    维基百科上面对于「智能指针」是这样描述的: 智能指针(英语:Smart pointer)是一种抽象的数据类型.在程序设计中,它通常是经由类型模板(class template)来实做,借由模板(tem ...

随机推荐

  1. Linux三剑客日志处理系列

    三剑客日志处理系列 一.特殊符号 1.引号系列 必会 引号 含义 单引号 所见即所得,单引号里的内容会原封不动输出 双引号 和单引号类似,对双引号里面的特殊符号进行解析,对于{}花括号(通配符)没有解 ...

  2. JSP第五次作业

    1.教材P78-79  例4-9 1 <%@ page language="java" import="java.util.*" pageEncoding ...

  3. Sentinel入门到实操 (限流熔断降级)

    微服务保护--Sentinel 介绍Sentinel 1.背景 Sentinel是阿里巴巴开源的一款微服务流量控制组件.官网地址:https://sentinelguard.io/zh-cn/inde ...

  4. 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(7)-Charles苹果手机手机抓包知否知否?

    1.简介 Charles和Fiddler一样不但能截获各种浏览器发出的 HTTP 请求,也可以截获各种智能手机发出的HTTP/ HTTPS 请求. Charles也能截获iOS设备发出的请求,比如 i ...

  5. CodeArts Snap:辅助你编程的神器

    摘要:通过将自然语言转化为规范可阅读.无开源漏洞的安全编程语言,提升开发者编程效率,助力企业快速响应市场需求. 本文分享自华为云社区<华为云发布智能编程助手 CodeArts Snap!> ...

  6. CRT 与 exCRT

    感觉网上很多写的都不是很清楚啊 awa. CRT 就是解这个方程 \(\begin{cases}x\equiv r_1 \pmod {m_1}\\ x\equiv r_2 \pmod {m_2} \\ ...

  7. centos7 ssh服务

    转载博客园: Centos7开启SSH服务 - KinwingHU - 博客园 (cnblogs.com)

  8. Cesium之Quick Start

    1. 引言 Cesium是一款三维地球和地图可视化开源JavaScript库,使用WebGL来进行硬件加速图形,使用时不需要任何插件支持,基于Apache2.0许可的开源程序,可以免费用于商业和非商业 ...

  9. html(Angular) 调用本地安装exe程序

    1.写注册表 新建 .reg文件 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\creoparametric] "URL P ...

  10. zint

    一.Zint1. 介绍 Zint是一个软件,允许在任何广泛的公共领域条形码标准中轻松编码数据,并允许将这种功能集成到您自己的程序中. Zint项目的目标是提供一个完全跨平台的开源条形码生成解决方案,目 ...