「DIARY」NOI2021 小结
这篇就主要说一下个人感悟吧,虽然不是金牌选手,但还是希望多多少少能对后来者提供些帮助
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,代码一存,检查:
文件目录,文件名,文件输入输出;如果你不确定代码放的位置,可以问工作人员;
数据规模,包括数组的大小和数据类型(long long);
编译:O2 和 C++11 开和不开都要测一测,应该以后都会开 C++11 但还是要看清楚;编译完测文件大小,MLE 和 CE 一样惨;开所有你记得的编译警告,尽管网上说只开
-Wall
就够了,但是似乎有些东西比如-Wconversion
就需要单独开;除了开了 O2 警告你
scanf/printf/freopen
的返回值没使用这种屑警告,其他警告都要重视,尤其是:- 隐式类型转换;
- 非
void
函数可能木有返回值; - 位运算的顺序;
- 变量重名(养成好习惯( ̄▽ ̄)")。
用文件输入输出测样例,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
检查代码里是不是还输出了中间变量,建议用
fprintf(stderr, "")/cerr
输出中间结果,最后直接搜索fprintf/cerr
删掉就行了;删掉代码里所有
assert
,尽管你觉得只要assert
挂了就会错,但是如果加了assert
就肯定没戏,删了过后可能会出奇迹o(* ̄︶ ̄*)o
5. 结语
作为一个 OIer 的学习生活已经结束了,也仅能以一个退役学长的身份和后来者交流了。
自己瞎编了六个字送给现役或有意参赛的人:『慎始,笃行,善终』。
「DIARY」NOI2021 小结的更多相关文章
- spring cloud 入门,看一个微服务框架的「五脏六腑」
Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 注:Spring Boot 简单理解就是简化 Spring 项目的搭建.配置.组 ...
- 从 Spring Cloud 看一个微服务框架的「五脏六腑」
原文:https://webfe.kujiale.com/spring-could-heart/ Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构 ...
- 从 Spring Cloud 看一个微服务框架的「五脏六腑」(转)
Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 本文将从 Spring Cloud 出发,分两小节讲述微服务框架的「五脏六腑」: ...
- 「MoreThanJava」机器指令到汇编再到高级编程语言
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- 「MoreThanJava」Java发展史及起航新世界
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- Python后端日常操作之在Django中「强行」使用MVVM设计模式
扫盲 首先带大家了解一下什么是MVVM模式: 什么是MVVM?MVVM是Model-View-ViewModel的缩写. MVVM是MVC的增强版,实质上和MVC没有本质区别,只是代码的位置变动而已 ...
- 「译」JUnit 5 系列:条件测试
原文地址:http://blog.codefx.org/libraries/junit-5-conditions/ 原文日期:08, May, 2016 译文首发:Linesh 的博客:「译」JUni ...
- 「译」JUnit 5 系列:扩展模型(Extension Model)
原文地址:http://blog.codefx.org/design/architecture/junit-5-extension-model/ 原文日期:11, Apr, 2016 译文首发:Lin ...
- JavaScript OOP 之「创建对象」
工厂模式 工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程.工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题. function createPers ...
- 「C++」理解智能指针
维基百科上面对于「智能指针」是这样描述的: 智能指针(英语:Smart pointer)是一种抽象的数据类型.在程序设计中,它通常是经由类型模板(class template)来实做,借由模板(tem ...
随机推荐
- drf入门规范、序列化器组件、视图组件、请求与响应
DRF框架之入门规范 本篇文章会详细介绍web开发模式.API接口及其接口测试工具.restful规范.还有经常分不清又很重要的序列化与反序列化的部分,初级交接触APIView.Request类. ...
- 淘宝数据采集之js采集
搜索页面采集,数据在控制台哦!!! 搜索页面采集,数据在控制台哦!!! 搜索页面采集,数据在控制台哦!!! 既然能打到控制台,当然也能传到系统!!! 既然能打到控制台,当然也能传到系统!!! 既然能打 ...
- ubuntu apt 安装最新版 nodejs
使用最新版本, 当前是 16.x 的版本. 这里我使用了 LTS 版本. curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E ...
- windows10、windows server 2016激活方法
1.激活准备 管理员打开cmd命令窗口(或者Windows+X组合键选择下图标注选项),复制对应版本命令回车即可 2.激活命令: 2.1 win 10 专业版 slmgr /ipk W269N-WFG ...
- MySQL8.0 高可用集群化 · mysql-shell · mysql-router · docker · 单主多从
高可用集群的基本特点 负载均衡 / 读写分离 / 故障转移本文以此为目标,利用 mysql-shell.mysql-router,基于 docker 的环境架构(篇幅太长,内容多了点儿). 一.名词及 ...
- jupyter环境搭建
前言 jupyter,一个交互式的笔记本,进行数据分析时比pycharm要好用和专业一些. jupyter安装的正确姿势 在别的教程里,他们讲的是通过pip install jupyter或者brew ...
- 推荐系统[八]算法实践总结V0:腾讯音乐全民K歌推荐系统架构及粗排设计
1.前言:召回排序流程策略算法简介 推荐可分为以下四个流程,分别是召回.粗排.精排以及重排: 召回是源头,在某种意义上决定着整个推荐的天花板: 粗排是初筛,一般不会上复杂模型: 精排是整个推荐环节的重 ...
- slate源码解析(二)- 基本框架与数据模型
源码架构 首先来看下最核心的slate包下的目录: 可以看到,作为一个开源富文本库,其源码是相当之少.在第一篇文章中说过,Slate没有任何开箱即用的功能,只提供给开发者用于构建富文本所需的最基本的一 ...
- pytorch学习笔记三之神经网络
神经网络¶ 1. 概述¶ 使用torch.nn包构建神经网络 nn依赖于autograd来定义模型并对其进行微分 nn.Module包含层,以及返回output的方法forward ...
- Unity3D 不挂载脚本自动初始化
https://blog.csdn.net/piai9568/article/details/98886028