初征——NOIP2018游记
前言
从最初接触oi到今年noip到来,也已经将近有一年了。从对于程序一窍不懂到现在开始学习算法,只是短短的不到一年的时间罢了。这次noip,不仅仅是我oi生涯的第一次noip,更是相当于是对我这一年的努力的一个检验。希望这次能取得一个好的成绩吧。
背景
初一时参加了南海区区赛,结果发挥失常,只有三等奖,痛心疾首,遂定下noip2018一等奖的目标。
初赛
不知道为什么前一天晚上睡眠质量极其差,基本上每个小时我是有醒来的时候,到了四点多我干脆不睡了。去厕所复习了《红星照耀中国》。
考场就在本校,所以直接呆在学校复习。
学校饭堂早餐是方便面(差评)。吃完后就去机房复习。
中午去饭堂吃饭,饭堂大叔很亲切地给每个同学打了四份菜,很饱。说实话挺感谢这位大叔的,可以看出来他是真心地祝福我们取得好成绩。
饭后休息了一会就去考场准备了。
14:30准时发试题,初赛就正式开始了。
选择题略难,感觉比去年难,考场上目测错五题左右。
问题求解和阅读程序求解很水,很快就切完了,细心一点就能拿满分。
完善程序第二题双向链表程序感觉很难,但是空全部都可以根据对称性蒙对……
剩下时间都在刚不确定的题目,最后也没什么进展。
16:30,考试结束。
考后和同学一起对答案,发现选择题有一道智障水题粗心多错了,完善程序第一题把下标当数组用了……心态爆炸,不要脸地大呼没有90pts要凉。
晚上出参考答案了,忘了自己写的答案,估分77~83pts。
几天后初赛成绩出来了。
比估分高,87pts,估计是蒙对的比预想的要多一些。
后来了解到gd分数线是60出头,没想到比去年高这么多。
当然,今年初赛的分数线比去年高应该是因为完善程序可以蒙,如果留空留得刁钻一些,可能分数线会低很多。
总而言之,今年的初赛对我来说还算是有惊无险的了。接下来就要期待我复赛的表现了。
复赛
最后一周开始全力复习,文化课都没怎么管,这几天作业没全部完成过。(还好班主任没发现)
然而复习成果貌似不怎么样。
无论如何,复赛马上就要来了,就算没复习好也要硬着头皮上。
复赛前一天晚上也是住校,学校要求直接睡别人的宿舍……
凌晨三点被蚊子吵醒,打了两个小时的蚊子,到了五点多因为劳累过度而再次睡着。
真是愉快的一夜呢。
根本没睡多久所以今天一整天都没什么精神。
饭堂早餐还是方便面。大概七点就回到机房复习了。
考前几小时看完了ac过的题后,写了几个模板,然后就上大巴出发了。
在大巴上看《算法竞赛进阶指南》,dp部分实在看不懂(我太弱啦),只好认真看搜索,特别是剪枝部分。
没过多久,就来到了广州二中。
第一次来到这所学校,大感为什么和我校差距这么大……
广州二中伙食还不错,吃的很饱。
考前紧张到发抖,一直以喝水来压惊……
两点多钟到了试室,刚开始充满激情,结果被突如其来尿意憋没了(谁叫你之前喝那么多水)。
两点二十多分进入试室,监考员早早地写上了密码,看完后去上了厕所,发现这层楼好像只有一个男厕???
14:30准时开考,然后可能我这一年oi生涯里最惊心动魄的三个半小时就到来了。
开考后打开题目花了近五分钟。下意识点开c盘里找,一直都找不到比赛文件,最后还是用全局搜索查找文件名,才发现东西都在d盘里,解压密码输了三次才对,导致开考后五分钟我才拿到试题……
按照ccf得难度分布惯例,我打算t1t2做一题看一题,做完后看一遍t3t4再决定做哪一题。
可惜今年ccf,貌似并不按常规出牌。
t1一如既往的水,getline再遍历一遍输出即可。切掉后检查了很久,差不多10min才过掉这题。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
string s;
int ans;
int main()
{
freopen("title.in", "r", stdin);
freopen("title.out", "w", stdout);
getline(cin, s);
; i < s.size(); ++i)
{
') ++ans;
else if(s[i] >= 'A' && s[i] <= 'Z') ++ans;
else if(s[i] >= 'a' && s[i] <= 'z') ++ans;
}
cout << ans;
;
}
我的程序
t2大模拟,不过要注意一下精度问题以及分类讨论求解,还是考细心为主。
题目有点长,尽管全部分析完再写,也是边写边改(还是我太弱了)。大概写了20min然后测样例,没过,继续改,还是没过。最后改了快到15:20才改好,反复检查后就放心地去做剩下两题。
#include <iostream>
#include <fstream>
#include <cstdio>
#define MAX_N 100001
using namespace std;
int n, m;
long long a[MAX_N];
long long sum1, sum2;
int p1, p2;
long long s1, s2;
long long d;
inline ? x : -x;}
int main()
{
freopen("fight.in", "r", stdin);
freopen("fight.out", "w", stdout);
scanf("%d", &n);
; i <= n; ++i)
{
scanf("%lld", &a[i]);
}
scanf("%d%d%lld%lld", &m, &p1, &s1, &s2);
a[p1] += s1;
; i < m; ++i)
{
sum1 += a[i] * (m - i);
}
; i <= n; ++i)
{
sum2 += a[i] * (i - m);
}
p2 = m;
d = abs(sum1 - sum2);
; i < m; ++i)
{
if(abs(sum1 + s2 * (m - i) - sum2) < d)
{
p2 = i;
d = abs(sum1 + s2 * (m - i) - sum2);
}
else if(abs(sum1 + s2 * (m - i) - sum2) == d && i < p2)
{
p2 = i;
}
}
; i <= n; ++i)
{
if(abs(sum1 - sum2 - s2 * (i - m)) < d)
{
p2 = i;
d = abs(sum1 - sum2 - s2 * (i - m));
}
else if(abs(sum1 - sum2 - s2 * (i - m)) == d && i < p2)
{
p2 = i;
}
}
printf("%d", p2);
;
}
我的程序
感觉这次在前面两题花的时间有点长了,按照这个题目难度其实三点前就能切完。我切水题的能力还是有待提高。
看完后面两题题面之后,最先想到的就是t3用dp,t4除了暴搜+剪枝以外,没有任何思路,于是决定先做t3。(其实我应该先做t4才对,不知道当时脑子怎么就抽了)
t3方程不好想,本来刚开始想到解法,写了30min,突然想到反例,自己hack了自己,只好全部删掉。想了半天正解无果,就打算换思路骗分,写一个能拿50pts的dp。
写完之后又去乱搞优化,结果不知道是什么问题,各种莫名错误出现。一行一行代码注释去测哪里出错,还是测不出来,只能自己乱改。(其实我应该推掉重写才对)
在改的过程中,下意识看了表,发现现在都已经是16:49了!无法,只好先放弃肛这一题。
打算上厕所去放松心情,结果这层厕所又被人占了?当时就是不知道可以跨楼层上厕所,只好憋着继续考。
虽然上不了厕所,但我还是在门口外面想了一会t4,只想到暴力做法,就回试室去实现了。
花了30min去写t4的暴搜和小部分剪枝,其他剪枝因为时间问题来不及加,草草调试了一遍,看到过了两个小样例后随便测了大样例,也没认真看用时,没记错的话好像用了5s多……(可能真是我记错了)
#include <iostream>
#include <fstream>
#include <cstdio>
#define MAX_N 1000001
using namespace std;
int n;
struct Node
{
int val;
int lt, rt;
int num; // 以这个点为根的树的节点数量
}a[MAX_N];
;
void Get_Num(int x)
{
a[x].num = ;
&& a[x].rt == -) return;
&& !a[a[x].lt].num)
{
Get_Num(a[x].lt);
a[x].num += a[a[x].lt].num;
}
&& !a[a[x].rt].num)
{
Get_Num(a[x].rt);
a[x].num += a[a[x].rt].num;
}
return;
}
bool DFS(int x, int y)
{
if(a[x].val != a[y].val) return false;
if(a[x].num != a[y].num) return false;
&& a[y].num == ) return true;
&& a[x].rt != - && a[y].lt != - && a[y].rt != -)
{
if(!DFS(a[x].lt, a[y].rt)) return false;
if(!DFS(a[x].rt, a[y].lt)) return false;
return true;
}
&& a[x].rt == - && a[y].lt == - && a[y].rt != -)
{
if(!DFS(a[x].lt, a[y].rt)) return false;
return true;
}
&& a[x].rt != - && a[y].lt != - && a[y].rt == -)
{
if(!DFS(a[x].rt, a[y].lt)) return false;
return true;
}
return false;
}
int main()
{
freopen("tree.in", "r", stdin);
freopen("tree.out", "w", stdout);
scanf("%d", &n);
, ;
; i <= n; ++i)
{
scanf("%d", &a[i].val);
}
; i <= n; ++i)
{
scanf("%d%d", &a[i].lt, &a[i].rt);
}
Get_Num();
; i <= n; ++i)
{
|| a[i].rt == -) continue;
if(DFS(a[i].lt, a[i].rt)) ans = max(ans, a[i].num);
}
printf("%d", ans);
;
}
我的程序
回头做t3,那个时候是17:42。遗憾的是,直到考试结束还是找不到t3程序莫名re的原因在哪,来不及重构代码了,只好把这个八成会爆0的代码交上去。
看了看窗外的黄昏,这景色就和自己的心境一样,整个人都更崩溃了。
最后10min,监考老师提醒,才发现有考生注意事项的文件,估计是开考的时候太急没看到。本来想问程序存到哪里,才发现是要放到d盘(汗)。
花了几分钟去检查文件名和测能否编译。搞完后只剩最后半分钟,平复了一下心情,估了一下分,感觉要凉,心态更炸了。
18:00,比赛结束。
出了试室和同学互探考得怎么样,跟同学说了我t3的情况,越说越觉得遗憾,最后还是不想说下去了。
上了返程的大巴,全程都有人在讨论t3,貌似有人想到正解了??
t3莫名错误搞得我很不是滋味,就因为它,这次我能否拿一等还是很悬。
考后自己估分,应该是100+100+0+(0~40)。只能坐等ccf出成绩了。
这次考不好的原因,当然还是我的实力不够强,特别是dp需要加强;其次搜索和贪心的话,因为骗分肯定会用到,所以也需要再去提高;还有最近新学的知识需要巩固的。
尽管t3错误异常,但如果我水平足够的话,其实是应该能找出缘由的,实在不行我也可以重写。这也提现了我考场策略也不怎么好。
至于考场策略不好,都是因为我的参赛经验不足。我的时间把控很不到位,前面三题花了太多时间(尤其是t3),导致t4根本没什么时间去想。我的其他方面的一些技巧也都需要去加强。
总的来讲,这次noip很好地诠释了一句话:技不如人,甘拜下风。
无论这次成功与否,该考完的已经考完了。
就这样吧。
考后第二天早上起来去洛谷自测,只交了三题,没交t3,结果全ac了,这数据太水了吧……

休息了一天再来想昨天的比赛,感觉心情好了很多。oi生涯中的第一次noip终于过去了。如果高中继续学下去的话,那也是只有四年的时间打oi了。进了竞赛这个圈子,收获了很多东西,在无数dalao面前,更加能感受到自己的渺小(弱)。在那么多从小学oi的人面前,我是毫无优势。若达到他们的高度,我还有非常多需要学习。
这次我是带着挑战ak虐场的心态来参加的,t3的dp狠狠打击了我,t4据说正解是manacher或hash,这我也根本不会。这次noip是深刻地让我意识到了我距离akpj还有多大差距。
本来打算考完这次,明年就去打tg。考成这样,明年直接参加tg估计是不可能的,应该还得继续打一年pj,希望明年能够如愿以偿。
过了几天后,ccf才公布选手程序了。
后来断断续续测了几个数据。
洛谷:100+100+10+100
学军:100+100+10+100
牛客:100+100+10+100
某大佬出的数据:100+100+35+80
本来测完前三个之后,自我感觉已经好了很多了,还真的开始有想着ccf的数据跟这上面的一样水的念头。结果在某大佬的数据下,t4re了五个点,感觉这样下去官方数据可能会re更多!现在我又慌了起来。
出成绩那天,中午没吃饭,赶着去机房查成绩,结果ccf咕了?害得我一天心情都不怎么好。
下午上电脑课,发现ccf改为明天出成绩……
第二天上午被老师叫出去,果然是ccf出成绩了。
rp爆炸,t4居然ac了,总共是100+100+5+100 = 305,在gd里也算是前几十名,应该是有一等奖了。
如果要把这次的题目放在洛谷上的话,个人认为难度如下:
标题统计:红题(不解释)。
龙虎斗:橙题(只不过是细节需要注意罢了)。
摆渡车:蓝题(这dp真的好难QAQ)。
对称二叉树:绿题(数据太水,就是剪枝水题)。
(话说我考前看剪枝,结果t4真用到了剪枝,怕不是要被禁赛)
又过了很多天,ccf公布了奖项。
得知了自己拿了一等奖,虽然这已经是不出所料的了。gd省一线215pts,有点水了。
再回想这次noip,虽然对于我的真实水平来说,这次成绩是有点差了,但毕竟还是有一等奖而且是300+,遗憾也没有那么大了。
无论如何,noip2018已经结束了,让我们noip2019再见!
初征——NOIP2018游记的更多相关文章
- Bittersweet——NOIP2018 游记
p { font-size: 16px; line-height: 1.5em; } blockquote { font-family: 'Times New Roman', 楷体; text-ali ...
- NOIP2018游记(退役记。)
Noip2018游记 这可能是写的最后一篇博客? \(Day0\) 早上六点从学校出发? 早上有雾,在车上扯淡,睡觉. 莫名其妙到了中午,想着午饭怎么解决,后来才知道早上发的四个面包竟然就包括我的午饭 ...
- 前行记录 - NOIP2018游记
NOIP2018游记 - 前行记录 NOIP2018 完跪……滚回学校考半期 QwQ 这篇不是题解 awa ,题解之后会发布的,毕竟我还没有AC呢 又及……G2020 陌路笙歌 - 再见(╯▽╰) 感 ...
- 一直没有敢发的NOIP2018游记
一直没有敢发的NOIP2018游记 NOIP2018游记 教练说知足是最好的,尽吾志而也不能及者,可以无悔矣.在这次考试中的表现令我还是十分满意的.(笑) D1 T0 我配置背得感觉很好,我考场上直接 ...
- NOIP2018游记 & 退役记
NOIP2018游记 & 退役记 我是一名来自湖北武汉华中师大一附中的高二\(OIer\),学习\(OI\)一年,今年去参加\(NOIP\),然后退役.这是一篇\(NOIP2018\)的游记, ...
- NOIP2018 游记 QAQ
写在前面: 本人初三党.NOIP前两个月不好好停课搞信竞愣是要搞文化课.于是,期中考与NOIP一起凉凉[微笑] 本人写的第一篇NOIP游记,各位大佬们随便看一看就好 Day -n 初赛71,竟然跟wx ...
- 【比赛游记】NOIP2018游记
往期回顾:[比赛游记]NOIP2017游记 转眼间又过去了一年,当年还是初中生的我已经摇身一变成为了AHSOFNU的高一学生. 回顾这一年我好像也没学什么新东西,要说有用的可能就无旋Treap吧,不知 ...
- NOIP2018游记-退役之战
\(Day\ 0\) 从火车站下来坐地铁\(1\)小时,再乘公交车到酒店,还要帮队里一个断腿大佬搬东西,累死我了.. 到酒店就快\(5\)点了,想打个牌也没时间. 酒店的房间很不错,空间大又干净,后来 ...
- Noip2018游记——AFO
本来Day 0和Day 1写得挺轻松的,结果没想到Day 2是这样的画风...心情逐渐沉重... Day 0 白天的时候颓的一批,上午考的信心赛还打错了一个字母然后$100pts\rightarrow ...
随机推荐
- EF(EF Core)中的NotMappedAttribute(转载)
NotMapped特性可以应用到EF实体类的属性中,Code-First默认的约定,是为所有带有get,和set属性选择器的属性创建数据列..NotManpped特性打破了这个约定,你可以使用NotM ...
- HUE配置hadoop
HDFS配置 参考文档:http://archive.cloudera.com/cdh5/cdh/5/hue-3.9.0-cdh5.5.0/manual.html Hadoop配置文件修改 hdfs- ...
- 2.3《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——重命名,复制,删除
最常用的文件操作除了将文件列出来外,就应该是重命名,复制,删除了.正如将文件列出来一样,大多数现代操作系统为这些任务提供了用户图形界面,但是在许多场景中,用命令行还是会更方便. 使用mv命令重命名一个 ...
- python_分布式进程中遇到的问题
看文档学习分布式进程中遇到了一下问题,文档里面例题是python2.X,我用的python3.x,就出现了一下莫名奇妙的问题,最终版代码先呈上: taskManager.py # coding:utf ...
- C# httpRequest Soap请求
一般添加web服务引用是.NET用代理类模式 创建SOAP请求代理类,代理类是.NET开发工具VS自动给你生成. 下面用一般HTTP的模式有时候可能更合适,原理是构造SOAP请求的XML后POST过去 ...
- 2017-2018 Exp3 MAL_免杀原理与实践 20155214
目录 Exp3 MAL_免杀原理与实践 实验内容 对msf生成后门程序的检测 Veil-Evasion应用 Visual Studio2017 + shellcode生成后门 主要思路 知识点 最后的 ...
- 20155307《网络对抗》MSF基础应用
实验过程 实验系统 所需设备: 靶机1:Windows XP Professional SP2 ,IP地址:192.168.1.128 靶机2:Windows XP Professional SP3 ...
- Python、pywin32&pycharm安装记录
未完待续-- Python 下载安装 1.百度搜索Python,进入官网,download,下载相应版本 [因为我们需要用到的是Windows下的解释器,所以在Operating System中可以选 ...
- Centos 定时任务发送smtp邮件
接着上一篇文章...... 1.首先创建一个sheel的脚本命令,我是在home文件夹下面创建的命令: touch a.sh 2.编辑a.sh脚本 vim a.sh ,键入键盘 i 键 准备插入 ...
- Maven学习第1期---Maven简单介绍
前言 Hadoop的MapReduce环境是一个复杂的编程环境,所以我们要尽可能地简化构建MapReduce项目的过程.Maven是一个很不错的自动化项目构建工具,通过Maven来帮助我们从复杂的环境 ...