初征——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 ...
随机推荐
- 怎样让oracle实验本在不做实验时性能提升——win7下举例
怎样让oracle实验本在不做实验时性能提升--win7下举例 型号:ThinkPad E431 系统:WIN7 实验使用的笔记本不使用数据库时.建议将oracle关闭,使其释放占用的资源. orac ...
- 一文让您全面了解清楚HBase数据库的所有知识点,值得收藏!
一.HBase基本概念:列式数据库 在Hadoop生态体系结构中,HBase位于HDFS(Hadoop分布式文件系统)的上一层,不依赖于MapReduce,那么如果没有HBase这种Nosql数据库会 ...
- Asp.Net StateServer实现共同域名下Session共享
概述 在实验的时候,参照了多方的信息,确实成功了,这里简单记录一下. 我们知道,在Asp.Net的Web.Config文件中,System.Web节点下,有个sessionState节点,它说明了应用 ...
- mfc 线程的优先级
知识点: 线程优先级 获取当前线程句柄 线程优先级设置 线程优先级变动 线程优先级获取 一.线程优先级(Thread priority ) 简单的说就是(线程)的优先级越高,那么就 ...
- 双面间谍(spy)
双面间谍 链接 分析: 戳这 代码: #include<cstdio> #include<algorithm> #include<cstdio> #include& ...
- ES6 箭头函数易出错细节
箭头函数表达式的语法比函数表达式更短,并且没有自己的this,arguments,super或 new.target. 箭头函数基本语法 (参数1, 参数2, -, 参数N) => { 函数声明 ...
- Elasticsearch Java Rest Client API 整理总结 (一)——Document API
目录 引言 概述 High REST Client 起步 兼容性 Java Doc 地址 Maven 配置 依赖 初始化 文档 API Index API GET API Exists API Del ...
- Dubbo+zookeeper搭建环境学习笔记
Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 1.单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本 ...
- 《Effective Java》 学习笔记 —— 并发
<Effective Java>第二版学习笔记之并发编程. 第66条 同步访问共享的可变数据 * 关键字synchronized可以保证在同一时刻只有一个线程可以执行某个方法或代码块. * ...
- Salesforce Apex学习 : 利用Schema命名空间中的DescribeSObjectResult类型来获取sObject对象的基本信息
DescribeSObjectResult 对象的取得: //使用getDescribe方法和sObject token Schema.DescribeSObjectResult mySObjDesc ...