扩大
缩小

NOIP2021 游记

NOIP 前的一周状态都不好,校内训练经常挂大分。

周四干脆就没到学校了,打算自己休息一天。

简要的游记(赛后三个多月回忆的,具体细节可能忘得差不多了)

周六早上很早就到三中了。

比赛的时候开题,T1 看了两三分钟想到一个 $\mathcal{O}(n \ln n)$ 的算法,但是 $n \le 10^7$,可能过不去。然后发现加倍枚举只需要在存在数位 $7$ 的情况下处理,于是时间复杂度降为大概 $\mathcal{O}(n \log \log n)$ 这样的,在考场机子跑 1.1s,当时觉得评测机肯定比这快很多就没管了。实际上确实是这样,在 luogu 测不到 0.25s 就过了。

然后是 T2,看了半天就想到了一个与 $S$ 大小有关的 50 分状压 dp,可能是被之前的推导限制住思维,正解死活想不出来,然后就弃了。

T3 瞎折腾半天没看出什么性质,原本想爆搜,然后发现不同的操作顺序,得到的数列会不一样,最后写了个非常 naive 的指数(甚至不是阶乘)爆搜。

T4 就嗯读嗯写把模拟写了出来,目前小计 $100+50+12+24=186$。然后发现 T4 可以多写一个 8 分,T2 可以多写一个 10 分。打完后人直接摆烂,根本没有什么继续做下去的欲望了。

最后也很显然地,我考寄了。T2 多写的 10 分也是错的,最终得分 $100+50+12+32=194$。省排 40+。

反思

这篇题解可能这个部分反而占得更多……

T1 报数

没什么好说的,倒是我考场代码常数极小,比大部分人程序快。

T2 数列

T2 同校选手还有一些来我所在高中培训的初中生都赛时过掉了这题。当初和他们聊天的时候,我记得最深刻的就是这个 dp 方程非常简单,主体只有一行。

在 2022 年的二月末,我重新打开了这题,终于找到了一个合适的存储状态、时间复杂度,过掉了它。

现在别人问我这题的方程怎么列,我敢保证到高中毕业都忘不掉。但是就和我 CSP 结束后后悔为什么不背熟网络流板子一样,每次碰到的都是新的考察内容,只追着已考的考点跑,有时也觉得自己挺狼狈的。

不过当我 A 掉这道题的时候,我确实也发现,自己的思维还是不够活跃,碰到一个稍微新一点的推导方程,自己就困于桎梏,出不来了。所以计数的题目类型还需要接触更多。

T3 方差

暂时不论这题的正确做法,我当初选择爆搜的想法也很简单,就是认为爆搜和随机操作序列的期望正确性是相同的。

然而,同样是思维的限制,我把「随机化」固化为 “随机操作序列”,但是稍微接触过 爬山 / 模拟退火 的人都知道,这个随机是可以不走回头路的(指每次随机一个位置操作,一直操作下去,不恢复原序列)。

校内用随机化的选手大部分有 $20 \sim 32$ 分。而我只拿了普及组 T1 难度不到的 12 分。

紧接着就是最戏剧性的一幕了:

  • 有些人在考场上就发现,每一次操作数列,其差分数组的内容仅仅发生了交换。然后就有一个学弟基于此性质写了个 48 分的优秀暴力。
  • 如果说考场上推不出来结论有运气成分,结果我报名但没参加的一场训练赛就已经提到这个套路了,然后我没去看题,也没去订正。
  • 又如果押题押中也算作运气成分了,那我参加的第一场 codeforces 比赛:Global Round #1 的 E 题有完全一致的套路。
  • 可惜,当时我是三年前,题面都只看了 ABC。D 是 NOIP2021 后一个月做的,才偶然发现了这个 E 题。

这三个机会,我曾拥有,又全部丢弃了。有人说得好,「运气是实力的一部分」,有了实力,这些所谓的“运气”才有它发生的概率。举个例子,你得到了一大笔钱,你只想把它当做食物,而不懂用它换取食物,最后撑不过几天就饿倒在地。

有两个学弟也用差分的性质写了模拟退火,但是参数没调好,一个 32 分,一个 52 分。写得好的选手就 60,80,88 分,甚至直接过掉了这题。

T4 游戏

32 分,暂未填坑。




其实现在回头重新做题,把拿到不到 200 分的旧题,在一两个小时内就可以补到 300+。

但是做人不能马后炮,我重新做 T2 的时候已经掌握到了不少信息,比如 dp 是四维,时间复杂度是 $\mathcal{O}(n^4m)$;补 T3 的时候直冲模拟退火,对着测试数据调参数等等。

打破这个恶性循环的办法,还是 “笨鸟先飞”。

2022 省选,加油。

posted @ 2021-11-23 09:53  HoshizoraZ  阅读(98)  评论(1编辑  收藏  举报