比赛前
我们学校比较特殊,初三的老师狠抓文化课,导致比赛前一天还在做语文试卷……
Day1
很紧张,上来第一题就是长长长的题面……看了大概30分钟,猛地发现这原来是一道线段树上分治的简单题?
第一题打完后大概10:00
看第二题,送了40分,后面展开后发现
n
m
n^m
nm怎么也展不开,想起以前学斯特林数的时候好像碰到过这个展开,但是已经忘却,开始找规律,最后什么也没有找到。
看第三题,什么想法都没有
考试出来后大家的估分大部分都是140.感觉好像还没有凉的太厉害。
下午赶快把斯特林数补了补,发现第二题就是一道签到题……
看YYT那个样子应该是200+了吧……
Day2
没有第一天那么紧张了,但还是害怕爆炸。
第一题,送上一道一眼的状压 dp。但发现好像开不够空间(其实可以?),然后就想到可以
2
m
∗
(
m
2
)
2^m*(m^2)
2m∗(m2)的时间复杂度,实际上这个并跑不满,可以跑到80分。
第二题,想了一下,发现可以直接每一个点拆位后对每一位的进位情况打标记。往上跳除了第一步以外其他都是步数固定的。之后就可以用线段树合并一类的搞到log^2了(用父亲将儿子的所有标记合并)。线段树合并比较生疏(好久没有打了),(暗示:我发现2500的大样例我竟然要将标记数组1000000左右)。
结果,T2打完比赛还剩30分钟
第三题,随便打了一个暴力。
省选就这样结束了。看YYT跑过来跟我说他Day2比Day1分高……
估分
100+40+0=140
80+100+15=185
一共:140+185=325(好像还可以?)
后话
成绩出来了,果然YYT进队了。
我的实际分数很低。
首先是Day2T2的空间爆掉了,因为线段树合并所需的空间实在太大了(我线段树合并打错了?)
接着就是Day1T1和Day2T2莫名爆掉了?交到各大OJ上竟然没有爆?
一开始以为是CCF那边搞错了,于是申诉,结果还是失败了。
后来发现原来是用%lld输出了int类型,导致在NOI Linux上输出了乱码
改题
Day1T1数组没有开够
Day1T3我发现我连线性基都不会……
Day2T1后来我想可以在空间和时间上平衡一下,就是开一个
2
19
∗
m
2^{19}*m
219∗m的数组,将时间复杂度压到
2
m
∗
4
∗
m
2^m*4*m
2m∗4∗m ,然后发现其实4也是可以省去的(询问两次就可以了),这样就可以将数组开到
2
10
∗
m
2^{10}*m
210∗m,复杂度就是
2
m
∗
m
∗
2
2^m*m*2
2m∗m∗2的了。
Day2T2改过来线段树合并之后,发现一直TLE40。
后来发现根本不需要线段树?直接从儿子这边累计父亲答案就可以了,这样连数据结构都不用?(感觉我比赛时傻了)
Day2T3 莫比乌斯反演很简单,但是后面的矩阵树定理都有点生疏了。
复习一下后发现这道题竟然也是简单题?
总结
1、算法掌握的不牢靠,很多算法只是一点了解而已,没有学的很深入。
2、 一定要注意有关环境方面的差异,分丢在这里很冤!
3、多思考,多做题,比赛要更加认真(套话……)
最近训练情况反思
自从从家里来到学校之后,作业就指数级增长;由于一些很特殊的原因(中考?),没有办法停课训练专心的准备省赛。不过临近比赛还应该安排一下有关知识点的复习,不能再出现像这一次的问题了……