生涯回忆:OI 与我
引子
美好的时光曾流过我的身体,我便心满意足。
每位 OI 选手可能都看过无数前辈写下的墓志铭。但或许到了由自己提笔的这一刻,感触才最为深刻。
尽管与 OI 相伴的时间相对短暂,但在这次旅途中得到的东西对我的某些思维和行事方式造成了深远的影响。
我是一个感情来时热烈,去时却健忘的人。许多儿时重要的事件,现在再去追忆却也只能大概查询到一个粗糙的轮廓。因此我的过去有一半都活在屏幕的另一端。对我来说,防止这段时光退化成几个难看的分数或许是这篇文章比较重要的意义之一。『失败什么的才不可怕,可怕的是什么都无法留下啊。』
算法竞赛可以重拾,OI 却仅有中学时代一次。不知我是否真正做到珍惜属于自己的 OI 了呢?
前传:擦肩而过
小学四五年级的时候,我对信息技术似乎有着略微超过同龄人的涉猎,例如能够熟练与高速下载器搏斗或使用任务管理器关掉极域之类。后来因为一些机缘巧合了解到了计算机编程,遂报名了某机构的 python 课程,在初中的时候也拿了几个类似所谓“信息素养大赛”的水奖,难度大概在于掌握基本输入输出语句和小学数学知识的那种。
机构老师比较年轻,不知他是否有算法竞赛经历,竟在一次课上让我注 ...
立体防御
To Misaka16172:\text{To Misaka16172:}To Misaka16172:
如果你飘了:
至少就目前阶段来说,你的水平离你的目标还有非常大的差距。
不要妄想能用短时间的努力追上他人长时间的积累,只有脚踏实地、坚持训练才是正道。
在打上那个分段之前,永远不要觉得自己有某个分段的实力,“场数不够” “之前没发挥好掉分了” 都不能作为借口。
做题数量甚至 rating 都并不与赛场表现成正比。
多找找你和周围其他人的差距。
如果你颓了:
世界上没有好打的逆风局,阶段性的挫折几乎是必然的。
无论上限如何,先相信自己的下限。
向前看,不要老是羡慕年龄比自己小的选手。
其他选手的水平都是动态的,在“找找与周围人的差距”之前不妨先与自己对比。
一场比赛并不能给你下定义,即使是正式比赛也是如此。
最后,在 whk 上多花点时间,有时间的话可以给自己找点别的事干。同时,注意身体状况和心理状况也是极为必要的。
省选联考 2025 退役记
前言
感觉比 NOIP 前心情平和很多了,因为不管结局怎么样,境遇都不会太差对吧,也没什么可遗憾的了。
Day -1
在学校颓了一天,也没写啥题或者打啥板子,倒是玩了挺多坦克世界闪击战,不得不说确实好玩!
中午提议要不要像 NOIP 前集体点个外卖,但好像没啥人想点,就去食堂吃了。
下午倒是写了个 yjh 给的题,挺简单的,非常适合省选前放松一下压力找找手感,结果不到半个小时打完过了样例,一交获得 0 分,虚空调试到放学,结果发现是离散化没排序。。。一看发现两个样例给的序列全是升序的,有点搞笑。
晚上坐车前往 ssf 旁边的酒店。第一次 CSP(CSP-J 2023)和最后一次省选(大概)都在 ssf,也算是有始有终了。
睡前在学校表白墙发现自己名字是啥鬼??
Day 0
考试日。
早上心情挺平静的。
开场 0.5h 给 t2 秒了,冲着过题去的,写了 2h 发现假的。此时还有 2.5h。上个厕所调整一下心态,疑似天崩开局。
回来成功签上了 t1,没发现中间有数不能取所以还调了一会。
还剩 1.5h 的时候会了 t2 52(性质 A)。于是开始豪赌。12:30 写完,拍出了几个错,调 ...
Future Notes
https://music.163.com/song?id=2163968035
这一周零零散散的用摸鱼以外的时间思考了一点人生。
我从高一开始就不喜欢化学,但大学想读 cs 相关专业,所以才不得不选化学的。如果没有这条限制,化学肯定是不会考虑了,再排除掉同样不擅长的生物和玄学现象严重的地理,八成当时的选择会是物史政吧。
假期里看到期中考试成绩,政治意外地赋了 97,语文英语也还算过得去,于是我就思考自己是不是更适合选文科,发了个朋友圈感叹一下。过了一天竟然有同学发来私信,她选了历史,想给我一点帮助,提出周二带着我去找高一教我们的历史老师聊一聊。如果不是这番话,可能我也就只是停留在嘴上了,没有意识到自己其实是有选择的机会的。
说回来,高一的时候我就觉得这位老师很有趣,讲课讲的也很有水平。可惜当时一心打 OI,并且睡眠不足,不光没有好好听课,还经常在他课上睡觉。他的意见是现在修改还来得及,一轮复习刚刚开始,如果我真的喜欢历史的话并不晚。
其实我的顾虑无非两点,第一个是能不能学好(这点和老师的谈话已经回答过了),第二个是报不了 cs 专业该咋办。其实后者也并非什么大问题,考一个转专业政策 ...
溪流
一条溪流出现在我眼前。
溪水清澈,波光粼粼。水底的鹅卵石在阳光的照射下格外璀璨夺目。抬头望去,水源似乎是远处的云雾缭绕之地。那里树木葱郁,开着几丛无名花。
感性使我扑向水面,调整泳姿,溯源而上。理性告诉我现在是冬季,是否会冻毙于其中尚不可知。我并未理会,放空头脑,享受着水流拂过身体时的阵阵凉意。
我愈发向上游动,河床与我的距离愈远,到了脚底无法触及的程度。询问周围的鱼群,他们说这才是开始。我轻轻划动双臂,流畅地伴随着。
时光流转,原先溪中的几片落叶和花瓣此刻已消失于无形,溪水的颜色由蓝绿色渐变至近乎透明的蓝。我逐渐意识到那并非危言耸听,水中实在是有些冰冷刺骨。鱼群没有发现我的异状,只是一味地迁徙。
鱼群带着我游至一处瀑布。我暂时停下,像是意识到什么似的。可到了现在,已容不得再去耽搁。我一跃而下。与预期不同,不是溪水,而是石板的触感。
伤情不大不小,所幸还没到能够阻止我前进的程度。环顾四周,身旁有几位搁浅的同伴,我向他们致意,不舍地离去。
水帘后是一处湖泊。这里的湖水比起水,却更像玻璃。鱼群的速度加快了,跟上他们逐渐变得吃力起来。负伤的那部分身体似乎也变得透明了,这实在不是什么好征兆。 ...
P11432 [COCI 2024/2025 #2] 流明 / Blistavost 题解
前言
这题真难吧,机房一车人没一个会做??
思路
首先你如果不对这个题进行什么深入挖掘,八成是想不出任何多项式做法的啊,然后注意到这个数据范围,在不存在可行的贪心策略的情况下,基本就是让你去设计一个 O(n2)\mathcal{O(n^2)}O(n2) 的 dp 没跑了。
但他这个关灯的轨迹看起来非常的神秘,无规律可循,怎么才能把它转化成一个便于 dp 的形式呢?
发现一个事情:我们的起点是最左边,如果从一开始没有一路关到底的话,中间没有被关的灯迟早还是需要再折返回来关一次。
然后看到题目里给的限制是必须在 ≥t\geq t≥t 的时刻关掉区间里的灯,因此拖到折返的时候再关被空出来的地方后面的灯就是更划算的。那么你现在已经关掉了前缀的一段灯,如果从某个位置开始停止关闭前缀的灯,还需要向右走吗?那必然是需要的,否则直接从头关到尾不就好了吗(感觉像废话文学 T T)。那么此时向右走的目标就很明确了,即走到最右边去关闭后缀的一串灯,后面的过程与刚开始的时候类似。
由此我们便描绘出了本题的重要结论:任意时刻场上未被关闭的灯一定构成一段连续区间。到这里设计 dp 就变得不那么无从下手了。
设 ...
P11431 [COCI 2024/2025 #2] 差异 / Različitost 题解
前言
来点不带脑子的做法,但有点卡常,在 COCI 的土豆评测机上过不去。
思路
不妨设 n≤mn\leq mn≤m,且下文的所有下标均从 000 开始。
看见异或还要求和可以先拆位。
拆位后考虑对于每个 aia_iai 求出其贡献,设 fi,jf_{i,j}fi,j 为第 iii 个数在第 jjj 次出现时会与谁异或,则有 fi,j=(fi,j−1+n)mod mf_{i,j}=(f_{i,j-1}+n)\mod mfi,j=(fi,j−1+n)modm,初始状态为 fi,0=if_{i,0}=ifi,0=i。看到这种东西可以直接倍增,设 sumi,jsum_{i,j}sumi,j 代表 aia_iai 第 jjj 次出现时当前位已经累计遇到了多少个 111(那么 000 的个数就是 2j2^j2j 减去 111 的个数),则有 sumi,j=sumi,j−1+sumfi,j−1,j−1sum_{i,j}=sum_{i,j-1}+sum_{f_{i,j-1},j-1}sumi,j=sumi,j−1+sumfi,j−1,j−1。
于是对于 aia_iai,其 ...
P11695 [JRKSJ ExR] 昼寝 题解
前言
忙里偷闲做 ds!
思路
参考了 @Rainbow_qwq 的题解,orz。
题意简述:支持加 / 删区间和查询当前所有被 [l,r][l,r][l,r] 包含的区间的并是否等于 [l,r][l,r][l,r]。
数据范围不小,很难在线维护,考虑离线分治。
设当前分治区间为 [sl,sr][sl,sr][sl,sr],中点为 midmidmid,在这一层分治内部处理所有被 [sl,sr][sl,sr][sl,sr] 完全包含并跨过 midmidmid 的询问,其余询问递归处理。考虑两类区间对询问的贡献:跨过 midmidmid 或被 [l,mid][l,mid][l,mid] 和 (mid,r](mid,r](mid,r] 完全包含。
跨过 midmidmid 的操作区间
对于这类区间,当前的目标是对每个询问 [ql,qr][ql,qr][ql,qr] 找到所有被 [ql,qr][ql,qr][ql,qr] 包含的区间中,极左的能贡献的位置 tltltl 与极右的能贡献的位置 trtrtr。下面以求解 tltltl 为例,trtrtr 与 tltltl 本质相同:
首先对时间轴 ...
点分治
前言
做题遇到这个不会,来学一下,应该还不算晚。
和序列分治挺像的,只是搬到树上而已。
用途
常用于树上路径统计问题。
算法过程
如果学过序列分治可以更容易地理解树上点分治。与序列分治干的事情差不多:在序列分治中,我们把要统计的区间按当前分治区间 [l,r][l,r][l,r] 分为三部分,被 [l,mid)[l,mid)[l,mid) 包含 / 被 (mid,r](mid,r](mid,r] 包含 / 跨过中点 midmidmid 的区间。前两类继续递归分治,只计算最后一种的贡献。由于每次区间长度减半,区间数量翻倍,故分治每层遍历的总复杂度均为 O(n)\mathcal{O}(n)O(n),一共 logn\log nlogn 层,总复杂度 O(nlogn)\mathcal{O}(n\log n)O(nlogn)。
然而在点分治中,我们要统计的东西从区间变成了路径,每次同样可以找到一个划分点 rtrtrt,则需要被统计的路径也可以分为经过 rtrtrt 的路径与不经过 rtrtrt 的路径,当前只需要以 rtrtrt 为根处理经过 rtrtrt 的路径,处理完之后将 rtrtrt ...