zoukankan      html  css  js  c++  java
  • ZJOI2020游记:一次不一样的ZJOI

    开坑小记((Jun 19th)

    由于疫情原因,这次的两场比赛被放在了周六周日连续两天。

    我也不知道这种变化对我来说究竟是好是坏,当然更可能是毫无影响(弱就是弱,不管怎样都是弱)。

    停课也停了一个多月了,也不知道这段时间做的题到底有没有给我带来什么进步。

    更重要的是,心中还担忧着下周的中考,完全没复习,且社会又变成了开卷考(停课一个月以前背过的东西完全忘光了),这样的我恐怕凉凉。。。

    正式前言((Jun 28th)补记)

    省选结束后忙于准备中考(尽管依旧考得不怎样),因此这篇游记开了个坑之后就一直没去补。。。

    现在中考完了,就滚回来补游记了。

    (Jun 19th)

    上午:最后的准备

    上午就来了机房,打算最后敲几发板子。

    突然发现洛谷上居然有吉司机线段树,这东西我只知道理论,根本从未写过。于是试着去写了写,结果调出来一堆(bug),然后发现从根本的状态存储方面就出了问题,想想改起来太麻烦最终写了一半就弃掉了。。。

    接着又找到拔山盖世的板子,尽管觉得肯定不会考,但由于之前并没有写过这个板子,最终还是决定去写一写。这次倒非常顺利,一遍过了。这种东西不一遍过才不正常吧。

    最后在临出发前写了一个(FST)的板子:【洛谷6097】【模板】子集卷积。感觉最近对于多项式稍微有些入门了,不过要面对(ZJOI),蒟蒻的我依旧不堪一击。

    出发

    下午乘坐高铁出发。

    高铁上没网,只好默默地写了一道题:【洛谷2150】[NOI2015] 寿司晚宴(后来到宾馆之后才交的)。

    实际上还口胡了另一道题,但数据范围看小了,结果自然就伪掉了。

    宾馆

    这次我们学校一共来了七个人,一个高二、四个高一、两个初三。

    由于同为初三,我和(LYP)神仙分到了一个房间。

    晚上主要以看板子为主,看(LYP)神仙写一道线段树合并的板子题写了挺久,于是也去写了一发。

    一波盲猜

    晚上睡前盲猜了一下明天会考些什么,于是就奶了一波:

    • 我相信明天(T2)绝对是线段树,因为最近几年(ZJOI)基本上都有线段树。
    • 我相信明天绝对不会考字符串。

    (Jun 20th)

    洛谷运势:凶

    早饭吃手抓饼。不知道我对自己的食量哪来的自信,居然点了两个,最后吃到撑死都只吃了一个半。

    考前看了看洛谷运势,发现今天运势是凶。

    说是说凶,实际上根据我过去的经验,似乎凶才是我的大吉?

    以前做牛客网的“一战到底”,每次运势为凶的时候都会遇上特别简单的题目,第一次凶的时候险些就上了排行榜,第二次凶的时候直接上了排行榜的(Rank 2)(尽管并没有多少人做这个东西就是了。。。)。

    因此,在心理作用下,今天的我似乎还是比较有自信的。

    (Day1)

    点开题面,(T1)就是字符串题。。。(脸直接被打烂了

    咦?(T2)难道不是线段树?等等,传统艺能?好吧,你线段树还是你线段树。。。

    首先完整地看了一遍题面。

    (T1)由于最近做了挺多后缀自动机题,有种莫名的自信。

    (T2)总感觉和去年的(T2)非常相似,反正看看都很不可做。

    (T3)一种(AtCoder)的既视感?感觉很有趣,但应该也不是非常可做吧。

    最终决定先开(T1)。很容易想到一个(O(n^2))的暴力,写完测了测样例,结果猛然发现此处位置不同的串只计算一次答案?!

    一下就慌了起来,想了好久都只会(O(n^3))的超暴力做法,单个询问的部分分想了快两个小时的后缀自动机都没能做出来,最后只好先写了超暴力暂时放着。

    再去看(T3),本来没啥思路,看完样例解释却莫名其妙地有了些奇怪的想法,最后先胡出一个(O(n^4))(DP),然后轻松优化成了(O(n^3))

    居然就这样拿到了(50)分?

    接着只好极不情愿地开了(T2),结合去年的(T2),打算设(f_{x,i})(g_{x,i})分别表示(i)次操作之后该点权值为(1)的概率以及该点到根路径上存在权值为(1)的点的概率

    一看似乎这样一写也才(30)分,但既然没有别的做法,也只好试着去推式子。

    最终,经过一个多小时的苦战,终于写完了这个(O(nk))做法,(30)分到手。

    再就是试着找出完全二叉树的规律,打表搞了半天啥都没搞出来。

    回去看(T1),突然发现一个二维数点的两只(log)做法(树状数组套树状数组,尽管是第一次写这种东西,但还是非常好写的),写完测了测极限数据有点卡,但信仰开(O2)之后是能过的,预计能得到(40)分了。

    (PS:考完之后突然发现这个东西只要改成扫描线就可以一只(log)了。)

    (PPS:听说还有更加简单的暴力做法,但我不会。)

    还剩半个小时左右,感觉(T1)(T3)都没啥得分空间了,又回头看(T2)

    猛然惊觉(T2)(DP)似乎可以矩乘优化?!

    手速写了一发,大样例跑了(10s)之后居然得出了正确答案?!

    然后加了一个矩乘的基本优化:循环展开。这个卡常效果果然好,一下就变成了(4s),相信开个(O2)还是能过的。

    由于时间比较紧来不及对拍了,有点虚。

    最终估分(40+100+50=190),但愿(T2)不要挂。

    下午&晚上

    (bzt)博客,主要是找了些比较有趣的题目看了看。(bzt)这么强肯定要进队了(\%\%\%)

    睡前开始日常翻游记。。。

    (Jun 21st)

    (Day2)

    看完题面一脸懵逼。

    (T1)什么鬼?光树的情况就非常麻烦了,结果还有基环树?果断放弃。

    (T2)题面非常清新,简洁又很好理解,一眼生成函数。

    (T3)好诡异,开局就写了一个(10)分的暴力,结果跑样例的第一个小数据就跑了(50 min)(你没看错,我并没有写错单位),弃了弃了。

    于是开始肝(T2)

    大力推了一波式子,先搞出一个粗暴的(O(n^3))的做法,感觉应该还能进行什么五花八门的优化。

    大致思路就是令(g_i)表示摸出(i)张不同种类的卡牌的期望步数,然后枚举要摸出几种卡牌来计算答案。

    结果,四个小时过去了,我依旧爆零。至今仍不知道究竟是式子推挂了,还是实现炸了。

    最后的一个小时就是疯狂写部分分。

    先对(T2)小数据写了个状压(DP),然后对于(3)个特殊数据分类讨论(我之前推出来的式子处理这种东西还是有点用的),花费半个小时写了(40)分。

    然后是(T1)(3)个特别简单的部分分,估计能得(15)分,也来不及检查了。

    最终估分(15+40+0=55)

    归程

    回去的时候坐在闪指导旁边,没啥心情学习(尽管过几天就要中考了),于是就看闪指导打游戏打了一路。

    感觉自己还是太菜了吧。

    成绩(后记)

    (Day1)(40+100+50=190),居然没炸。

    (Day2)(5+40+0=45)(T1)的分类讨论挂了么。。。

    不过实际上考得怎样对我来说都差不多吧。根据闪指导的话,反正联赛成绩摆在那里,再怎么努力也都只是徒劳。

    更何况,这次(Day1 T2)能做出来,完全就是靠运气而不是凭实力,如果没做过去年的线段树那题,我怎么可能考场做出来这种题?

    不过,达成了(ZJOI)考场切题这一成就,还是挺高兴的吧!

  • 相关阅读:
    分布式事务
    K8s应用案例介绍——阿里云
    数据库索引的底层原理——b树
    Understanding the GitHub flow
    Code Review
    详解微服务架构
    yarn之package.json
    yarn.lock文件
    Git Api——git开发
    Unit Test —— xUnit.net
  • 原文地址:https://www.cnblogs.com/chenxiaoran666/p/ZJOI2020.html
Copyright © 2011-2022 走看看