你相信命运吗

你相信命运吗

本文属于退役 OIer 梦到啥说啥的文章,包含大量碎碎念,废话,前后逻辑不连贯,错别字等问题,有一些自己主观的感悟,一不小心就写了超过一万字。

最后的最后,还是以这样狼狈的方式退役了,或许这就是命中注定的结果吧。

虽然有一大堆想要说出来的感慨,但是还是先记录一下我的考试经历吧。不想看也可以跳过。


NOIP 心路历程:

day-4 ~ day-1

打了三次模拟赛,前两次出的题可能是刚好和我对上脑电波了,考出来成绩非常好,不算 max0810 神仙,我两次甚至都是机房最高分,第二次考试甚至还在有题意理解错的情况下做出了整整三个题,这给了我极大的自信,也说明了如果出一些我擅长板块的题目我也能得到很好的成绩。

第三次考试的经历和正赛很像,第一题是一个类似与贪心的博弈论,我倒是很快想到了贪心策略,但是一直没想到如何优化复杂度,所以先想了下后面的题,但是没能深入的想。后来倒是做出来了 T1,但是剩下的题只打了暴力。

复习阶段,

  • 总结了一下之前做过的构造题。然后发现构造好像不考。
  • 复习网络流和费用流。网络流虽然说的是不考,但是很多时候可能拿到大量暴力分,甚至可以模拟费用流角度去思考反悔贪心。我本来是想着把这个留在后三个题来当成杀手锏来用的。还有就是 hfu 说要重点关注之前自己很擅长的板块,要保证能拿分,我自认为网络流学的还可以。
  • 大致浏览之前写的博客。回忆起了很多有些遗忘的知识点,比如同余最短路。
  • 写大模拟。
  • 复习去年真题。
  • 复习三种 Tarjan 的板子。

因为之前 CSP 打过模板大赛,我也看了一下那些模板题,觉得大部分都在这段时间里的模拟赛练得比较很熟悉了,确实没有什么好复习的,就没有在考前敲模板。(从现在来看这个决策也没有任何问题)

day0

考前一天,上午还在复习去年真题,下午回家休整。

上午做真题给自己搞得相当紧张,相比于中考前的紧张有过之而无不及。

我认为考试的时候非常需要一个清晰的大脑,一定要睡好觉,所以没有继续刷题,而是把大多数时间拿来看番了。(其实从现在的角度回来看,我做出的这个决定也没有什么问题,并且确实让我第二天比较冷静)

晚上的时候浏览了一下我之前总结的 Trick,看了一半我感觉我有点紧张和头晕,我觉得不能再继续看下去了,所以我写在后面的注意事项也没有复习。(从现在来看,我 T2 暴力没调出来的其中一个原因就是没有复习注意事项)

因为放松好了,其实睡觉睡的也比较好,至少没有花太久就睡着了,也没有过多的紧张情绪。

day1

正赛的那天。

我大概 6:45 起的床吧。自然醒的,我也不知道为什么这么早就醒了。

7:50 左右到考场,拉了屎,所以考试全程没有拉。

8:30 开题,通读四题,感觉题意较为清楚(相较于之前打的三场模拟赛)。T1 瞬间想到费用流做法, T2 暂时没太明白为什么题目给的贪心策略是假的,总之是我不擅长的计数题,T3 是构造+ad-hoc,感觉有很多突破口,不过还没有明确的思路,T4 还是 DS,不过限制有点多。

读完题后,我的计划是快速做出 T1,然后主攻 T3,然后在 T2 和 T4 间选一个做。

接下来复刻一下赛时的想法,让读者知道我到底绕的什么奇奇怪怪的地方去了,也可以让我找到我失败的原因。

T1 因为没有别的思路,就顺着模拟费用流的思路想(从现在来看,这可能是本场最失败的点),后来发现可以从背包的角度理解,然后推到了一下性质,得出一下思路:

  • 如果 \(x > y\),那么选了 x 后下一步(如果有)就必定选 y,可以看作是一个重量为 x+y,权值为 2,可以无限选择的物品;
  • 如果 \(x = y\),那么可以看作是一个重量为 x,权值为 1,可以无限选择的物品;
  • 如果 \(x < y\),那么可以认为是一个重量为 x,权值为 1,只能选择一次的物品,并且在选择这个物品后,就变成第一种情况里的物品了。

因为值域很大,自然会从同余最短路的角度出发,也就是比较物品的性价比,之后微调。

发现权值这一维度只有 1 和 2,所以想了下是不是换维之类的东西。

然后发现对于 \(x=y\) 的物品,可以看作是一个重量为 x+y,权值为 2,可以无限选择的物品,和一个重量为 x,权值为 1,可以无限选择的物品;

对于 \(x > y\) 的物品,也可以看作是是一个重量为 x+y,权值为 2,可以无限选择的物品和有一个重量为 x,权值为 1,可以无限选择的物品,因为重量为 x,权值为 1 必定在性价比上劣于重量为 x+y,权值为 2,所以直接贪心自然最多选一次,不会重复选;

这样就比较统一了,只有第三种情况会照成只能选一次的物品。这里称之为第三种物品

先不管第三种物品,发现之间按照性价比贪心好像是对的,就是最后要一点微调。

首先权值相同的时候肯定是选重量最小的物品,然后比较不同权值时的物品:

因为权值只有 1 和 2,所以如果把一个性价比高且权值为 2 的物品换成性价比低但是两个权值为 1 的物品,必定亏。

所以如果权值为 2 的物品的性价比高于权值为 1 的物品的性价比,那么策略是先一直选权值为 2 的物品,最后看剩下空间能否再拿一个权值为 1 的物品。(注意这里最多只能拿一个,因为权值为 2 的物品的性价比高于权值为 1 的物品的性价比)。

当然如果权值为 1 的物品的性价比高于权值为 2 的物品的性价比,那么就一直选权值为 1 的物品就行了。

最后再来考虑刚才忽略掉的第三种物品:

假设不管是权值为 1 的物品还是权值为 2 的物品,假设性价比最高是 X,那么,因为第三种物品只能选一次,所以可以先把性价比小于等于 X 的那些物品先选完。(就是这个想法最要命!是导致了我整场比赛崩盘的直接原因,然而导致我这样想的原因是我在前面的推导种已经有点疲倦了,就可能会犯这样的错,而且不太清楚这种贪心会又怎样的坑点

我认为整个贪心的正确性显然,认为是正解。虽然思维链很长,但是我觉得每一步都很朴素和自然,所以其实整个思考过程只花了 14 分钟。拉了泡尿冷静了下。

最后写代码前回顾了一下思路。构思了一下,发现“权值为 2 的物品的中性价比最高的物品的性价比显然高于权值为 1 的性价比最高的物品的性价比”,感觉可以少分讨一个情况,想了一下,验证了一下小样例,并且用调整法验证了第三种物品前的贪心的正确性,觉得没有问题,就开始写。

写倒是挺快的,但是发现第 6 个大样例挂了,答案小了 1。因为数据太大了,想要瞪眼调试,没有成功,然后又用了构造小数据,也没法 hack 掉,毕竟我在写代码之前就自以为考虑到了所有情况。我又检查了一下贪心,还是没有看出问题。(?好神奇,为什么没有看出来?可能是我恰好欠缺这种贪心的经验,而且平时老是写对拍,像这种不好写对拍的题,需要的静态调试能力没有充分练习到)。

大概 9:30(?有点记不清楚具体时间了),我就决定不能再和 T1 耗下去了,然后思考了一下 T3 T4。不过因为我 T1 没调出来,心里是慌的,所以没能非常投入地思考着两个题,想了个大概的做法,T3 想了一个 \(2^n\) 的树上背包做法,T4 转成二维平面后或许可以用树套树维护那些那个六边形。(而且从现在来看,T3 的做法还是错的)

然后去思考 T2 题面中的贪心策略为什么假,借助样例想明白了,发现了我 T1 居然和这个假的贪心策略本质相同!于是回去改 T1。

结果 T1 还调了好一会儿,反正最后是过了大样例,我自己造的小数据也能过,然后从原理上来说也没有什么明显问题,就过了。大概是 10:30(?不一定准确)

这时候我的想法是,T1 这个贪心假的地方藏的很深呐,应该很多人都会再这里浪费很多时间,所以我觉得自己攻克了一个难题,所以心态还没有崩,但是在 T1 思考的太多了,有点累了。(结果现在发现 T1 是个超级简单题,变成小丑了)

既然我发现了 T2 题面中贪心策略是为什么假了,我就想着可以刻画一下这个假掉的条件,看可不可做。

我刻画了出了这个条件,虽然目前这个条件还比较抽象,但是感觉是个突破口。因为时间只剩 2 个小时多一点,一个是因为我害怕正解冲不出来,另一个是为了验证我刻画的条件是否正确,我决定先打一个 \(n2^n\) 的暴力。想了一下代码细节就开写。

然后就是大道磨灭了,我把小样例调试过了,找到了几个小 bug,然后在 n = 5 但是值域很大的样例 G 了,然后我尝试模拟了一下这个样例,但是没能得到和表答一样的答案,我就有点无从下手了。于是我只能用我不太擅长的瞪眼调试法,倒也瞪出来了一点问题。

大概是 12:00 时还没找到问题。幸好我当时比较理智,选择先把 T3 暴力打了,结果仔细想了下,发现之前 yy 的 \(2^n\) 做法有问题,还需要打点补丁。因为时间不多了,所以只能选择 8 分的 \(n^n\) 暴力,虽然说这个暴力也不好写呀!开始我以为 \(m=2\) 是菊花图,写了才发现不是,幸好没浪费很多时间。12:40 得到 8 分。(呜呜呜~怎么只有 8 分)

12:40 ,发现 T4 没有纯暴力,虽然有一些分感觉很容易想倒,但还是要用 ds 维护,感觉大概率写不完,所以决定去改 T2 暴力,说不定能改出来呢?还有 20 分左右。

最后花了几分钟检查一下自己有没有交上代码后,就一直和 T2 暴力干瞪眼。还真找到了一个问题,但是错的,然后继续干瞪眼,倒最后 1 分钟的时候又发现了一个问题,但是已经来不及了。(这个问题在我自己总结的注意事项里提及,但是我没有复习到)


所以很可能最后只有 100 + eps 分。大概率上不了一等线。

我分析了一下这场考试,我认为最失败的还是 T1,浪费了太多时间,也让我的大脑变得疲倦,使得我无法投入地思考后面的题目。虽然后半场我一直保持冷静,没有犯决策上的失误,却也只能得到 T3 那可怜的 8 分。

就这样拼尽全力也无法换回。

虽然说就算 T1 很快被我光速做出来了,后面的题能仔细思考了,也很又可能不能做出正解,但是我很有信心能拿到后面的大量多项式复杂度做法的暴力分。我觉得如果 T1 没有浪费思维力,很快找到正解的话,T2 暴力应该不至于调不出来,然后 T4 也能拼上大量暴力分,T3 就不太清楚能做到什么程度了,或许当时的思路还可以拓展?

我的比赛在第一题就毁灭了,

至于为什么会在 T1 上浪费这么多时间,因为我刚刚好复习了美食节这个题,想到这个费用流做法是非常自然的。然后我因为这个做法太自然了,都没有静下心来去感受题目想让我干的事情,没有去感受题目的性质。我在之前的模拟赛里,能很快地切掉 T1 的最主要的原因,就是我能静下来感受题目的性质。但偏偏这次,因为费用流做法太顺了,每一步做完都感觉又无数条路可以继续往下走,让我不能静下来去感受题目性质。如果从感受题目性质的角度出发,我可以感受到这个题是一直在取某个性价比最高的组合,然后再取一些单个的东西,然后单个的肯定是从小到大来,枚举一下取到了那个就做完了。如果这样,很可能就不会让我走到假贪心的陷阱里。

但是过去的事已成定格,在和同学交流之前,我又如何知道 T1 不过是这样一个简单题呢?我又凭什么知道,用模拟费用流的角度出发会又这样的贪心陷阱了?事后诸葛亮是没有任何作用的,这就是我命运所指。

一切都是如此的巧合,一步一步的陷阱,我层层深入。

  • 如此恰巧,我复习到了费用流,复习了美食节这个题;

  • 如此恰巧,我还复习了同余最短路,让我模拟费用流的思路,在完全背包的辅助下,延展开来。

我尚未意识到我已经走上了一条不归路,越走越深。

    • 为何?我偏偏就把前两种物品统一成了这样一个不伦不类的样子?
    • 为何?我偏偏就没有在之前就发现只有一个物品会反复使用多次?
    • 为何?我偏偏就想到了要把第三种物品留到最后再来想办法解决?
    • 为何?我偏偏就在加入第三种物品的时候没想到不能光看性价比?
    • 为何?一切都是那么巧合?恰巧抓住了我连自己都没有发觉的那一点点思维的漏洞呢?

或许,这一切都是人神安排给我的命运。

或许,这是命运让我能就此回归文化课,

或许,这就是我 OI 生涯命中注定的结局。

嗟乎!时运不齐,命途多舛。冯唐易老,李广难封。屈贾谊于长沙,非无圣主;窜梁鸿于海曲,岂乏明时?所赖君子见机,达人知命。


OI 生涯

对于 NOIP 的碎碎念先告一段落吧。

我常常追忆过去。

曾经的日子无法重来,我只不过是一个过客。

究竟该从何时开始说起呢?不妨就从头开始,把我暂时还想的起来的都先记录下来吧。

小时候,想要用电脑自己编写游戏,觉得这简直太酷拉,然后稀里糊涂地报了小学里的 C++ 兴趣班,那可是连输出 hallo world 都要讲几节课的,面向小学生的普及兴趣课罢了。

小升初的那个暑假,听说初中有一个 C++ 的免费教学课,我抱着去玩一玩的态度参加了。后来把参加教学课的同学组了一个班,每周六上两个小时(有可能是三个小时,我有点记不到了),好像当时还把这个班起名为 C++ 校队。不过这哪里是校队呢?不过是过家家的兴趣班罢了,学了大概半年,可能才学到递归递推高精度这种东西,在印象里,好像连贪心二分这类东西都没学到。我当时还没有“信息学竞赛”这个概念,也觉得无所谓,学一些递归递推也非常有趣了。

值得一提,当时因为没有复杂度的概念,我认为多重循环是一个非常逆天的语法,觉得大多数问题都可以直接穷举出所有情况来处理。我就用多重循环,写了一个可以下五子棋的简单代码。还自以为自己很了不起。

后来因为“校队”的老师怀孕了要生孩子,这个校队就这样草草解散了。

我爸有认识的人给他推荐了一个叫“号家军”的机构,但是当时因为没有合适我直接加入的班型,就让我先在一个叫“艾尔兰”的机构先上了几节课来补一下基础语法。

之前的这些经历,不过是了解了一下有 C++ 这个软件,所学的最多算是编程,

在初一下的寒假,我开始在号家军上课,我认为从这里开始,我才算接触到了“信息学竞赛”。

印象中,是每周天上午 8:00 到 12:00 上课。寒暑假集训,一般是连续一周或两周的上午 8:00 到 12:00 上课。

说实话,号家军的训练方式其实比较类似于学校里的模式,但是强度肯定要低太多了,不管是难度还是时间上都是这样。

开始的时候,肯定还是学习一些贪心二分 dfs bfs 这样的东西,我觉得这些东西非常有趣,所以每周都非常期待周天的课程。也常常下课了还留在教室里面改题。

这种兴趣驱使的努力让我的成绩一直保持前一二名(印象中是这样的),让我误以为自己非常聪明。

因为我的成绩一直不错,被升到了一个新的班级,可以学到一些更高级的算法,比如最短路,动态规划。

我当时最短路学的半懂不懂的,动态规划是完全没有理解,不过也能跟着走,因为这些算法后来又讲了一轮,我才搞懂一点皮毛。

值得一提的时,当时贾子杰的成绩也很好,我和他经常在做题榜单上争前一二名,因为他性格比较开朗,就和他成为在号家军这个补习班最好的朋友。没想到,我们两个竟然高中考到了同一所学校,甚至还是同一个班!但是他后来放弃了竞赛,而我独自坚持了下来。

后来初二下的时候,whk 的老师说零诊非常重要,让我们投入所有时间。我当时文化课不怎样(主要由语文英语导致),觉得文化课比竞赛重要得多,而且也没有下定决心要学信息学竞赛,就忍痛停止学竞赛了。

记得当时号家军的老师找我和家长去约谈,说我是有希望冲击省队的,让我留下来继续学习信息学。至于他当时所说的“有希望冲击省队”究竟有几分把握就无从得知了。

所以从那时候就暂停学信息学了。

因为我非常喜欢信息学,而且还盲目认为比较擅长(现在看来这主要是因为当时周围的同学太弱了,没有打击到我的自信),所以后来就觉得我应该去走信息学竞赛这条路。

学信息学竞赛后面甚至变成了我的执念,在我初三冲刺中考的时候,我就一直以“去成都七中学竞赛”为我学习的动力,一直奋斗。在初三,我的文化课成绩甚至还有所提升了。最后也是磕磕绊绊地上了七高。

在学校训练的感觉和之前想象的有比较大的区别。

首先给我震撼的是居然上午要跑操,下午要打球。通过运动来休息的方式是我之前没有体会过的,其实效果很好。

接下来是每天早上的早读。来学竞赛,居然每天早上还有语文英语的早读,真是让人不可置信。不过这个习惯确实对我文科的学习帮助巨大。

然后是同学之前讲课,有些时候是请学长来讲课。我本来以为教练是来一直上课,但事实上教练主要工作是指定训练计划,给学生讲学习方法。

还有就是要通过看书来学习信息学。我之前觉得就是信息学就是讲课和做题。但是教练以来就让我们买了两本书。一本叫《算法竞赛进阶指南》,另外一本叫《离散数学及其应用》。

我因为自己学过一点,自己为还挺厉害的,在加上很多同学一直在哪里装弱,让前期我自以为自己比较厉害。

但后来逐渐感觉不对劲,怎么其他同学都会一堆我听都没听过的算法呀?

尤其是讲多项式的时候,我连暴力多项式全家桶都没太听懂,但是有的同学就完全能理解。

后来才知道,我是全机房基础倒数第二弱的人。

从现在来看,当时的我可谓是一无所知,只会一点普及组算法,甚至连 ds 是什么意思都不知道,像什么线段树树状数组完全不会;dp 板块虽然学过一点,但是根本没有理解到本质;图论倒是学了挺多的,最短路生成树学过,但是原理上也没有深刻理解,像 Tarjan 这种就没学过了;字符串知道有这个板块,只在准备初赛的时候学过一点点哈希;数学恰好学了一下线性代数的内容,组合数学只有小学奥数的水平,其他板块完全没听过;不过之前倒是做了不少贪心和思维题,所以在这方面还将就,其实最后那一段时期也主要靠着思维题的水平在模拟赛中取得了比较不错的成绩。

我想,我虽然基础比别人弱,但是学习能力和思维能力应该还可以,同时因为我很热爱信息学竞赛,也非常努力。

接下来一段时间,我就恶补我之前没有学过的算法,倒是在短时间学了很多算法。

这很大程度上受到了同桌 hkx 的帮助,他的基础非常好,我经常去问他问题。

还有就是我抽了一些空余时间来看《算法竞赛进阶指南》,确实让我补了很多基础算法。

不过从现在看来,当时理解到的算法其实并不多,很多都只是看了个皮毛,甚至连基础原理都没有摸清楚。

不过从现在看来,当时以为学地快,只是没有对比而已,其实我理解这些东西的速度都非常慢,如果是其他基础弱的同学来,同样能做地到我学习算法的速度,而且肯定比我学的快。

接下来就是考 CSP-S 和 NOIP,CSP-S 做出了两个题,但是一个题挂成 0 分了,NOIP 又做出来了第一题,大家都说这个第一题很难。这其实给了我很大的自信,我觉得我前段时间的努力有效果了。

但是因为着急着补基础算法,文化课没有学好,没能去成北京集训。

不过好像听说北京集训过于难了,很多人收获并不大。

后来有一段时间专注于文化课,但是 OI 上其实也没有太大的退步。

接下来的寒假收获很大,提升了数学和 ds,特别是 lxl 讲 ds 对我的帮助非常非常大。

接下来的西安集训非常坐牢,主要原因是我理解题解的能力很弱,不过出去外培很好玩。

后来有一段时间一直学的很烂。

之后还出了一次题,结果出的题做法假了,消沉了一段时间。

后来 max0810 回到七高来和我们一起学习,分享了网络流和 SAM,讲地很好,我听懂的程度很高,倒是让我重拾了点自信。

后来在林荫训练,是我比较不在状态的一段时间,感觉学习效率非常低下。应该就是这段高一下和暑假这段时间,被其他同学拉开了距离。

就是在这段时间,我发现我并不比其他同学聪明,特别是在理解能力上,这导致我在看题解和听讲时效率远低于其他同学;还有就是记忆力不好,刚才想到的点子瞬间就会搞忘。

我问我自己:我真的一无适处吗?我的优势到底在哪里?

我特别热爱信息学,学信息学的时候我会觉得学习是快乐的,所以我非常努力。我比别人更努力。这是我才是我非常有自信的一点。

还有就是我对于内化了的知识能用的比较好,但是这只是比普通人在这方面的水平稍微高一点点。

我觉得如果把自己类比成电脑,那就是说我输入输出设备很差,内存比较小,但是 CPU 跑的稍微快一点点,不过我后来就是靠着这个在有些模拟赛里取得了较好的成绩。

上了高二就开始全停课,这段时间模拟赛打地很多,每周基本上都有 CF 和 AGC。

我积累了很多题目的套路,我感觉这些东西对考试的帮助比一些偏门算法有用。

后来还有大家自己整理一个板块然后一起分享的时候,我因为发现我学了很多数论的东西,但是都是零零散散地,所以自告奋勇来整理数论这个板块。

不过后来意识到数论这个板块根本就不考,就算考也就是随便分解一下质因数就能解决的,感觉自己浪费了很多时间。

刚做完这个分享这段时间,我感觉自己离其他同学的差距巨大。(可能仅次于我刚来七高时的差距)

因为 hkx 数据结构讲的巨详细,巨好,所以我主功了数据结构这个板块,我觉得达到了一个很不错的水平,模拟赛中做出 ds 题的概率显著提升。

因为我认为 Ad-hoc 是关键考点,而且 max0810 讲的本来也很好,还有就是我感觉我在这方面还有点灵感,所以我还重点搞了下 ad-hoc。

DP 板块基本上属于破罐子破摔,没有搞。

做这些决策主要是在扬长避短。

这个板块分享时,我做出的这些决策,几乎奠定了我后面两个多月的强项和弱项。

我在模拟赛中还发现了我的一个技能:当我没有思路时,我会静下心来感受题目性质,感受题目究竟是在干怎样一回事。

这个技能让我能快速解决比较简单的题,特别是贪心题,在做困难题时也可以找到突破口。这也是我后期的制胜法宝之一。

后来我的考试策略基本上就是先做 T1,快速做出来后就通读后面的题,选一个自己擅长的来做,剩下打暴力。

大部分时候我都能很快做出 T1,有些时候 T1 做太久就会导致正常比赛状态比较差,我觉得这是导致我 NOIP 爆炸的很主要的一个原因。

值得一提的是,比起模拟赛,我更喜欢 CF 和 AGC 这样的思维题。特别是 CF,因为 CF 的题经常能做出来,比较有成就感,但是 AGC 一般就做不出来。

后期还有好题分享,但是我很少自己找比赛打,所以没什么好题可以分享的,所以我后期就使劲抽时间打洛谷月赛和 ARC。

后来教练让我们做题的时候画思维导图这个方法,很大程度上弥补了我记忆力差的缺点,也是我后期的制胜法宝之一。

最后一个月,我的相对水平,很可能是我 OI 生涯中的制高点,连续两场 CF 都取得了非常好的成绩,在模拟赛中有时考的也特别好。

最后的结果却是非常令人遗憾,不过,学习 OI 我并不后悔。在别人看来,我花费了很多时间精力,觉得我很幸苦。但实际上我只是贪婪地在追求学习的快乐,我学文化课从来没有像学 OI 这样快乐过。OI 的比赛,评分完全客观的性质让我喜欢,不过更重要的是写代码,比文化课大题中写过程,更加的准确,严谨,最重要的是你不需要去向别人解释你为什么是对的。“不需要向别人解释,真理就是真理。” 这才是我最着迷于信息学的原因。


碎碎念

对于看书

《算法竞赛进阶指南》看了极大部分。

《离散数学及其应用》跳着跳着看,感觉很多都是没什么用的。

《具体数学》看了前几章有点看不下去,一直放在寝室里,想要抽空闲时间,结果一直没有看。

ds

记得刚学数据结构的时候,我只会用线段树做单点修改区间求和,没有打标记的概念,所以去问 hkx。他很认真地给我做了详细的解释,但可惜我的理解能力就那样,花了巨久,理解了一点皮毛,然后瞎写了点,然后对这题解一行一行改,其实和超题解几乎一致。

还有就是树状数组,我就是觉得难以理解,不知道为什么要设计成那种鬼畜的形态。

最后是平衡树,我就完全不懂了。

这三个算法都是我看了《算法竞赛进阶指南》后才算是理解的比较深刻。

初期,因为分块非常好理解,所以我特别喜欢。恰好分块思想有很有拓展性,我就像用分块来强行替代其他的算法。

还有就是莫队,是某次,我家长联系到了七林的老师吃了一次饭,当时他用两三句话就把莫队给我讲懂了,所以我也比较喜欢莫队。

一些分治算法是我一直不太懂的,特别是 CDQ 分治,我当年强行搞懂了一点,后来因为没有用到,就又忘了,现在都不太会。

总体来说,我觉得我数据结构,虽然起步晚,但是却是我很拿得出手的板块。这里很大程度上要归功于我的同桌 hkx,我的 ds 能力主要是因为他这方面很强,带动了我。

DP

DP 一直是我很弱的板块,我觉得我好像就是对这种思想有点排斥,初学的时候就不太懂,后来可能是某次考试的时候,我走投无路,在绝境下,推出了某个题的 dp 方程,然后就好些了。不过很多高级的 dp,像是轮廓线 dp 都是在考前一个月的时候才学会的。还有就是西安集训那段时间,我因为做不来题单里的题,就去网上随便找了个 dp 题单,都是一些绿题蓝题,没有太难的题。不过我的 dp 水平需要的就是这样的简单题,因为我连最基本的那些东西都没搞懂。从现在来看,那一次对我的帮助巨大。

图论

我在大家北京集训的时候偷偷总结了最短路算法的各种变式。当时我觉得已经整理的非常完善了,其实现在来看都还有很多东西没有涉及到。

整理最短路算法,算是我第一次非常正式地写这种学习笔记,之前因为本来就理解的浅,学习笔记非常水货,很多就是直接给一个别人的博客链接,然后加上一两句话,很多都是这种。

最小生成树,初学的时间很早,但是好像用的不多就没有深刻理解。在 NOIP 前大家互相分享的时候我才认真地整理了,当时重点突破了一下,做了很多很多题,理解得算是还可以。

Tarjan 初学是在高一的国庆,记得当时家人带我去西安玩,我在高铁上把 Tarjan 的各种变式学完了,不过也只是浅尝辄止。真正搞懂是在某次考试的时候,我狗急跳墙死拼硬凑出来的。在那之后又研究了一下各种变式,算是搞清楚了。

欧拉回路也是最后复习阶段才搞懂的。

网络流是 max0810 讲课给我彻底搞懂的,当时因为独立做出了一些网络流的题,给我那段低谷期极大的自信。

图论虽然是我接触的很早的板块,在前期确实是我为数不多能看得下去的板块,但是后期就比较一般了,不过至少不能算太烂。

字符串

很长时间对哈希的理解都很浅,后来明白对于不同的东西有不同的哈希方法,求算是对字符串,也有高位哈希和低位哈希两种。之后又学了神仙模数 \(2^{61}-1\),之后才算理解地比较深刻。

Trie 树比较好理解,但是前期不太会一些变式。

KMP,记得小时候随机做题的时候遇到了,当时因为没有复杂度的概念,所以用了暴力字符串匹配,发现 TLE。老师告诉我应该使用 KMP。我努力地去学了下,没有搞懂。后来一直没太懂。 2025-5-25 的时候,xk 学长分享字符串的时候才彻底搞懂。

AC 自动机、PAM、Z 函数、后缀数组曾经会,现在不会。

搞忘什么时候搞懂 manacher 的。

SAM 是我觉得我字符串里最拿的出手的东西。首先是因为我学过好几轮,其次是 max0810 讲的真的好,还又就是 SAM 太万能了,刚好从某种程度上补充了我其他字符串算法的遗漏。

数学

太多了不想说了。

多项式 FFT 曾经会现在不会。怎么说呢?FFT 真的,难评。其实比较喜欢一些多项式和生成函数的题,但是 FFT 真的是学了就会忘的东西。

我的强弱项

我主观地说一下,可能一段时间后我的想法又改变了,但这里只是记录一下我现在的想法罢了,无关正确与否。

我觉得我和别人交流的能力比较弱,包括但不限于:听讲,看书,读题,理解。

但是我觉得我独立思考的能力比较强,而且能利用好草稿纸,做一些小清新贪心,ad-hoc 题会比较好。某些我内化了的算法也能运用地很好。

擅长的板块有博弈论,ad-hoc(思维题的统称),数论,数据结构,SAM。

一般的板块有:图论,线性代数,字符串。

比较差的板块:数学的大部分,字符串的某些算法,DP。

非常弱的板块:计数(非常弱,包括组合数学,生辰函数,多项式),概率期望。


感谢我的教练 hfu,给了我非常多有用的建议,在学习上,甚至在生活上,都让我发生了蜕变;

感谢父母,班主任及其他科任老师,大力支持的听课学竞赛;

感谢机房里所有的同学,一直互相帮助,互相支持着一路走到最后。

特别感谢同桌 hkx,在我前期的学习中给予我的巨大的帮助,还让我找到学习语文的快乐。

还有 yt,wyh,czx,why,jsh,xwb,lr,lzh,wyc,zxk,每一个人都对我的成长起到了至关重要的作用。

感谢来上课的学长和老师。

还要感谢未曾蒙面的网友,解决了我的不少疑惑。

感谢我的室友。

虽然我在竞赛这条路上没有走到一个足够高的高度,但是大家对我的帮助,让我在高中短短的一年半时间成长了很多。


我已无话可说,速速学 whk 吧。

posted @ 2025-12-02 10:32  花子の水晶植轮daisuki  阅读(54)  评论(3)    收藏  举报
https://blog-static.cnblogs.com/files/zouwangblog/mouse-click.js