2025杭州智灵夏令营学习笔记
Day1 贪心算法的巩固与拓展
知识点
普通贪心
邻项交换排序贪心(在进行贪心前的排序时,通过分析两个
对象交换的条件构造cmp函数)
反悔贪心(在贪心时通过反悔操作避免盲目贪心的错误性)
题目分析
A:树上的普通贪心,做起来比较顺利,一次AC
B:邻项交换排序贪心,思维简单,但没有注意到负数的情况错了很多次
C:反悔贪心,初次接触反悔的思路,思路巧妙,代码实现简单
D:邻项交换排序贪心+高精度,思维简单,但对于高精度的代码不熟练导致没有AC
今日总结
今天做题速度慢,应加强对推导关系式的问题的练习
Day 2 计数问题
知识点
普通计数问题
错位排序计数问题(f[0]=1,f[1]=0,f[n]=(n-1)*(f[n-1]+f[n-2]))
卡特兰数计数问题(C[n]=C(2n,n)-C(2n,n-1))
容斥原理计数问题
题目分析
A:普通计数问题,思路巧妙,在做的过程中没有注意想x,y各不相同的条件,卡了很长时间,代码实现简单,一次AC
B:普通计数问题,思路简单,代码实现简单,一次AC
C:排列组合计数问题,思路简单,但需要高精度,没有AC
D:动态规划+容斥原理计数问题,思路极巧妙,在代码实现时没有注意数组下标为负的情况,卡了一段时间
今日总结
知识点练习不熟练,做题慢,后面一直做不动题甚至有紧张焦虑的心情,发现自己在做题的过程中容易恋题,即使没有明确的思路也很长时间抓一道题不放,但这对日常练习和比赛都不利,比赛时会导致时间分配不合理,日常练习时会浪费大量的时间,可以在今后的练习中设置一个思考时长(目前没有确定),超过时长就问问其他同学的思路或者看看题解
Day3 模考
考试分数
估分100+20+0+0
实分60+30+15+0
补分100+100+15+0
考试时间戳
本场考试时间安排太混乱,时间戳太混乱,没有记录
考试总结
T1 赛时使用了二分,但对于小数的二分掌握不熟练,调了很长一段时间,但考完试后才知道直接贪心就可以,加入二分后反而导致很多细节没有处理好,挂了40分。T2 T3长时间一直反复地看,这两道题都有一点思路,感觉很接近正解,所以一直不想放弃拿满分的机会,但一直也没有什么特别大的进展,浪费了很多时间,在剩余一个小时时,终于放弃想T2,T3的正解,T2写了一个复杂度极差的暴力,只能拿20分,但数据比较水,多拿了10分,T3交了一个正确性有问题的代码,微微拿了点分,其实还不如稳拿点暴力分。T4赛时压根没看,但其实暴力分很简单。
考试反思
在思考每一道题时,都直接想正解,稍微有一点思路后更不愿意放弃正解,但实际上我现在可能只有一下子想到第一题正解的能力,一下子想到第二三四题正解的不现实,自己应从40-60的部分分入手,这样难度会大大降低,而即使想不出正解,也能保证有200分左右的基本分数
Day4 字符串算法
知识点
hash
trie
KMP
exKMP
Manacher
题目分析
今天的题目几乎没怎么练习
今日总结
字符串算法本来就只会打模版,现在还几乎全忘了,今天一天都在复习字符串算法的基础
小技巧
在处理字符串时,可以通过在字符串前加一个空格方便下标计算
在处理有限位数小数时,直接转化为整数,避免各种精度问题
在进行有取模的运算时,加法乘法每一步加取模,减法加模数相减再加取模,除法使用逆元相乘再加取模
Day5 模考
考试分数
估分:100+10+0+0=110
实分:100+10+0+0=110
补分:100+10+10+0=120
考试时间戳
8:30-12:00
8:30考试开始
9:00写完T1
10:00写完T2暴力
11:00写完T3暴力
12:00比赛结束
考试总结
呵呵,看似确实没有挂分,但实际是一点挂分的空间都没有,T1非常简单,T2依然是旧习难改下意识开始想正解,幸亏及时止损,T2打暴力用了很长时间,T3打暴力也用了很长时间,最后还发现两个暴力的复杂度都极差,这时突然发现T2的答案似乎有一定规律(答案是定值或等差数列或双重等差数列)就放弃了T4,到最后也没总结出T2的答案的规律
考试反思
发现自己和其他高分数的同学的差距主要在打暴力上,自己打暴力时不够慎重,导致反反复复换思路浪费了很多时间,程序复杂度也不够优
Day 6 模考
考试分数
估分:100+100+45+30=275
实分:0+100+0+30=130
补分:0+100+100+100=300
考试时间戳
8:30-12:00
8:30考试开始
8:40读完所有题目
9:10发现T1理解有误,有点炸
10:00写完T1
10:10写完T2
10:50写完T3暴力
11:00写完T4暴力
12:00考试结束
考试总结
出分数前感觉良好,认为自己终于要翻身了,结果又挂分回到了往常的分数。T1感觉是最难的一道题,猜了一个结论,可是样例看似比较强实则不然,什么结论都能跑过去,也是和大多数同学一样,拿了个零,不得不说正解的结论实在是巧妙。T2极简单,有T1作为铺垫让我一度认为自己想简单了,可结果就是这么简单。T3,呵呵,我忠诚的朋友文件读写居然把我绊倒了,本有一个不错的暴力分数,现在也没了,但这题的正解的n^2求树上求全源最短路的思路是真的巧妙。T4利用双指针有一个1e9的做法(我认为这不能称为暴力了),心想说不定能卡过去,即使拿不了满分,也应该有一个不错的分数,结果这题数据太强,只拿到了一个基本怎么写都有的暴力分
考试反思
这次考试能非常明显地看出我认为题目顺序和题目难度挂等号的思维定式,T1如果放在T2我可能会把更多的时间放在本质的原理的思考上而不放在盲目地猜结论上,如果放在T3T4我可能会更直接地打暴力和想特殊性质,都不会导致爆零
Day 7 Relax Day
Day 8 数据结构优化算法
知识点
启发式合并(把较小的对象合并至较大的对象,数量每次扩大一倍,复杂度为nlogn)
线段树优化动态规划
题目分析
A:利用并查集合并集合,思路简单,在实现时没有注意到会有什么奇奇怪怪的非零的数导致死循环,卡了一段时间
B:启发式合并的好题,因线段树不熟练没有做
C:水题
D:线段树优化动态规划,因线段树不熟练没有做
E:线段树优化动态规划,因线段树不熟练没有做
F:线段树合并模版,因线段树不熟练没有做
今日总结
本来还天真地认为自己的数据结构没什么问题,只不过是线段树不太好罢了,但结果线段树贯穿一整天,发现这是一个大问题,决定狂补线段树
Day 9 计算几何
知识点
向量(有方向的线段)
向量的模(有方向的线段的长度)
向量的内积(a·b=|a||b|cosθ)
向量的外积(a×b=|a||b|sinθ)(a×b=a.x * b.y - b.x * a.y)
跨立实验

凸包(在平面上能包含所有给定点的凸多边形)
graham扫描法(把极角作为关键字进行排序)
andrew算法(把横坐标作为第一关键字,纵坐标作为第二关键字排序)
半平面(部分没有听懂)
斜率优化动态规划(完全没有听懂)
题目分析
A:暂时不会做
B:模版题,只是题目允许O(n^2)复杂度但O(n)复杂度就可以做
C:暂时不会做
D:爆搜水题,题目数据范围极小,思路及其暴力,细节实现也及其暴力,但是在判断矩阵是否相交时仅仅考虑几个极点漏了一种情况(见下图),卡了很长时间,到最后甚至抓狂了,第二天早晨才调出来

今日总结
上午的大班课感觉收获很大,也许是之前从来没有接触过计算几何的知识的原因,下午做题也还好,感觉状态在恢复
Day 10 模考
考试分数
估分:30+0+20+0
实分:50+0+20+0
补分:100+100+20+0
考试时间戳
8:30-12:00
8:30考试开始
8:40网站太卡刚刚进去
8:50读完T1T2T3
9:30写完T1暴力
10:00放弃T2
10:30T3本有了思路却发现理解有误只能重新思考
11:00写完T3暴力
12:00考试结束
考试总结
感觉极差,今天的题目很简单,没有一道是不可做题,可在考试时不知道怎么了,什么也不会做,补题时T1T2比较顺利,T3因为考虑不周密卡了很长时间,最后也没调出来
考试反思
考试一时头热的不理智现象仍然存在,虽然是模拟考试,但也应像决定自己OI生涯的考试一样对待
Day 11 数论
知识点
裴蜀定理 证明
gcd 证明
exgcd 证明
群(部分没听懂)
陪群(完全没听懂)
拉格朗日定理(完全没听懂)
中国剩余定理(完全没听懂)
拓展中国剩余定理(完全没听懂)
矩阵
矩阵的运算
矩阵的行列式(部分没听懂)
矩阵快速幂(代码需要加强练习)
题目分析
仅仅写了板子题,有难度的题目几乎没怎么练习
今日总结
先前的数论基础太弱,日后应持续学习,不间断地练习
小技巧
在进行有正有负的除法运算时,注意c++向0取整
Day 12 机房模考
考试分数
估分:0+60+50+40
实分:0+0+0+0
补分:100+100+50+0
考试时间戳
考试的时间戳都记在草稿纸上,结果草稿纸落在机房了
13:30-17:30
13:30考试开始
17:25发现T1是完全错误的,炸了
17:30考试结束
考试总结
考试时感觉状态挺好,T1做出来了,T2T3T4的分打得也挺好,考试结束前五分钟,T1突然自造样例没跑过去,检查后发现算法有问题,心态直接炸了,根本没有时间修改,只能把错误的程序交上去了,考试结束后,完全模拟CSP的比赛有同学说没使用文件读写,本以为是同学在招笑,结果我才是小丑

考试反思
发现自己的考试习惯差,考试时注意力不集中,还喜欢半场开香槟,今后的模拟考试都应注意,避免再次出现
Day 13 模考 构造问题精讲
考试分数1
估分:100+0+0+0
实分:100+0+0+0
补分:100+0+0+0
考试时间戳1
8:00-9:00
8:00考试开始
9:00考试结束
考试分数2
估分:100+0+0+15
实分:50+0+0+15
补分:100+0+0+15
考试时间戳2
9:15-12:15
9:15考试开始
12:15考试结束
考试总结
今天的考试有两轮,一开始的考试质量太差了,但T1的思路确实巧妙,样例完全忽悠人,越分析越复杂,需要惊人的注意力注意到数据范围n给的是范围m给的是定值,场切后拿下这一个小时的比赛的rank1,之后的比赛,因为时间,T2T3都是概率题等等原因,节奏很差,最后得分也很差
考试反思
不能给自己留巨大的知识漏洞而赌考试不会出这样的题,现在的我没有赌的成本,任何一场大比赛的失利都可能送断我的OI生涯,但在比赛时遇到一些不擅长的题目时,也不应该慌张,稳住节奏打暴力也不会造成什么大影响
知识点
决策单调性(只听懂了大致的思想)
今日总结
IOI金牌世界冠军讲课,以构造题目为主,构造的题目都没有什么固定的套路,思维难度大,其中有几道的思路极巧妙,一道有边不建边无边建边后把所有两个点都存在的边的两个点删除,还有一道树的叶子节点连边后二分图染色......
Day 14 Relax Day
Day 15 图论
知识点
图论的众多算法(最短路,同余最短路,差分约束......)
分层图优化建图
题目分析
A:模版题,一次AC
B:同余最短路的简单题,同学的化解高精度的做法真的巧妙
C:分层图优化建图的最短路的简单题,一次AC
D:矩阵快速幂优化最短路,第一次写出矩阵快速幂,还是独立完成
今日总结
发现过去学习的很多算法都有不同程度的遗忘,对差分约束这个东西一点印象都没有,但居然发现模版题有过去的AC记录,发现同学们的很多的理解方式和实现方法都很可学习,应该加强与同学的交流,丰富自己的经验
Day 16 模考
考试分数
估分:100+20+0+0
实分:20+20+0+0
补分:100+100+0+0
考试时间戳
8:30-12:00
8:00考试开始
12:00考试结束
考试总结
状态差,考试时注意力不集中,考试策略运用不到位
考试反思
停止幻想并开始行动吧!走过漫长的黑夜就是黎明!
Day 17 动态规划优化
知识点
前缀和后缀和差分优化dp
单调栈单调队列优化dp
斜率优化dp(本质并没有完全理解)
动态dp(完全没听懂)
题目分析
今天的题目难度大,由于许多知识点第一次接触,遂选择了练习更基础的题目
今日总结
自我感觉状态在恢复,保持危机感,加油
Day 18 模考
考试分数
估分:100+100+15+0
实分:69+100+0+0
补分:82+100+30+0
考试时间戳
8:30-12:00
8:30 考试开始
8:40 读完所有题目
9:30 写完T1
11:10 T2已经写了90min了,开始质疑自己到底能不能写出正解,但想想前几次模考分数既然都已经那么差了,赌一把也无妨
11:10 写完T2
11:20 发现T3是一道极具趣味的一道题,部分分的设计的质量也非常高,可惜考试的时间所剩无几,只能随便打打暴力,感觉错过了一道宝藏题
11:40 写完T3暴力
12:00 考试结束
考试总结
全场总分第二名,全场唯一一名AC者,T1本认为丢失小数的精度并不会对结果造成很大的影响,结果发现我还是太天真了,但只存一位小数竟然就有82的高分,看来数据比较水,T2有很多的做法(目前来看至少有4种),而我的二分做法是复杂度最玄学的,个人评估是$n2log2n$,但有概率退化,一位同学在赛时也有同样的思路,但是认为这个复杂度是错误的,于是便选择了暴力,半天都一直在造数据卡我的程序的复杂度,最终在deepseek的神力帮助下成功造出来可以在不开O2优化的情况下卡掉我的数据,T3又是开了文件读写导致爆零,暴力的15分也没了,讲评发现正解需要卢卡斯定理,意为着赛时即使我有足够的时间也可能只能拿到30-45分,T4赛时时间不够了直接放弃,但是20分的暴力似乎十分简单
考试反思
分数终于逐渐正常化,但依然不够优秀,未来的路还很长,加油
Day 19 机房模考
考试分数
估分:40+30+0+0
实分:40+30+0+0
补分:100+100+100+0
考试时间戳
12:30-16:30
12:30 考试开始
漫长的一段时间在想T1T2的正解
14:30 暂时放弃想T1T2的正解,开始打暴力
14:40 第一次写完T1暴力,刚写完就不小心把DEV-C++关了,哎我程序呢?
14:50 第二次写完T1暴力
15:00 写完T2暴力
漫长的一段时间在想T1的正解,似乎有一点思路了,但到考试结束大样例也没调过,保险起见交了暴力
16:30 考试结束
考试总结
T1的思路似乎是正确的,我最后的程序可以获得60分的成绩,T2在之前见到过,对这个问题也挺感兴趣的,应该想过一段时间,就是没有刨根问底地探讨正解,T3许多乱搞算法都可以拿高分,额,不太好评价,T4很有牌面,全场最高为10分,思路为输出样例
考试反思
我不想再体验考试时一直无思路的痛苦了,我要变强,我要变强,我要变强!
Day 20 模考
考试分数
估分:0+0+0+0
实分:10+0+10+0
补分:100+10+10+0
考试时间戳
8:30-12:00
12:30 考试开始
漫长的一段时间在写T1正解
11:00 放弃写T1正解,心态有点崩了
12:00 考试结束
考试总结
T1并其实没有很难,最有难度的可能就是不会离散化的我尝试写离散化,可我在赛时很顺利地就写出来了,反而是后边的暴力搜索卡了我很久,补题时发现同学的把矩阵顶点坐标乘三倍后舍弃一圈的处理重边重点的方法很巧妙,可是我的错误方式却很神奇,老师看过后让我直接提交,结果直接就通过了,其原因就是我的本地的DEV-C++的系统栈空间太小了,之前只在123的CSP集训时听说过这种错误,结果这次真让我碰上了,T2T3T4暴力分挺足的,只是赛时心态崩了,啥也不想写了
考试反思
OI的知识点的学习一定要趁早,不要等到考试时需要时才想起来,很容易慌乱,在赛时时只有T1或T2的满分可以承受20min-30min的思考时长和40min-60min的实现时长和60min-90min的总时长的风险,所有超过这个时长的风险都不应被接受,在赛时时保持清醒,时时关注时间,及时转换策略
Day 21 RELAX DAY
Day 22 分治思想
知识点
普通分治
CDQ分治
题目分析
A:求逆序对个数的经典题
B:思路巧妙
C:数学题,感觉和分治思想没什么关系
今日总结
Day 23 树上问题
知识点
树上贪心
树上差分
树上启发式合并
树链剖分
题目分析
A:树上贪心的简单题,一次AC
B:kruskal重构树上求最近公共祖先,金老师过去讲过,但是没有做
C:
D:树链剖分的模版题,树链剖分本身就很毒瘤了,更毒瘤的是多组测试数据没有数据的组数
E:树上启发式合并
F:树链剖分
G:树上启发式合并
H:二分答案+树上差分
I:树上启发式合并
今日总结
上午多次发言,下午一直在调树链剖分的模版题,感觉被这个东西毒着了,平均代码长度两百行,不过后边又练习了几遍就感觉没那么难了
Day 24 机房模考
考试分数
估分:100+100+100+0
实分:100+0+40+0
补分:100+100+40+0
考试时间戳
13:00-17:00
13:00 考试开始
14:00 写完T1正解并对拍成功
15:50 写完T2正解
16:50 写完T3自认为正确的贪心
17:00 考试结束
考试总结
T1是一道计数dp的简单题,第一次在赛时写对拍,对拍真是神队友,成功帮助我发现了代码中的一个小问题,T2是kruskal重构树的模版题,由于前不久练习过,很快便写出来了,但,信友队的神仙模考有题要求使用文件读写有题要求不使用文件读写,又一次因为文件读写失去了100分,T3写了一个自认为正确的贪心,20个点只错了2个点,但是这题又开了捆绑测试,错误的两个点又恰恰在分值最高的两个subtask中,只拿了比暴力分还少10分的40分,花了一整个晚自习的时间才发现自己的做法纯属就是乱搞,T4似乎是AC自动机的模版题
考试总结
虽然考试的结果不尽人意,但我认为考试的节奏还是把握地不错的,继续加油
Day 25 机房模考
考试分数
估分:100+10+20+0
实分:100+10+20+0
补分:100+10+100+0
考试时间戳
12:30-16:30
12:30 考试开始
15:00 写完T1
16:30 考试结束
考试总结
T1看一眼就有了$n^n$的爆搜做法,但潜意识里觉得这只能拿暴力分,于是花了极长的时间写了两个假dp,最后才发现包搜就可以通过,T2T3在赛时认为极不可做,暴力分也很难拿,讲评时发现其实并没有那么难,T4不会欧拉函数,根本不可做
考试总结
虽然T1写出了正解,但在T1上花费150min一定是极其不理智的,今后要彻底断绝这种情况,OI知识点的学习要趁早,不能再因为知识点不会导致一道题一点分都拿不了
Day 26 机房模考
考试分数
估分:0+100+0+0
实分:0+0+0+0
补分:0+100+0+0
考试时间戳
12:30-16:30
12:30 考试开始
13:30 暂时放弃T1正解
15:30 当场研发主席树切T2
16:30 考试结束
考试总结
T1一个小时写了一个假dp,其实想到了把正向变为反向的接近正解的思路,但是由于时间原因,暂时放弃,T2很快想到如何转换原问题,并利用双重的求和作差优化,但是发现我学的数据结构中似乎没有可以很好的处理要维护的信息,其实离线一下就可以使用树状数组,突然想到了主席树,但我不会啊,怎么办?我的大脑中赛时唯一对主席树的印象就是oi-wiki上的一张图,我能写出来吗?我决定搏一搏,但我清楚我可能会花费许多许多的时间实现,于是我决定先写T1的暴力再写T2的正解,于是十分钟后,我又写了一个假暴力,我不愿意再在T1上浪费时间,便开始写主席树,两个小时后,我通过了大样例,当场成功研发主席树,这时多么奇幻的一次经历啊!但时间只剩余不足一个小时了,我却只有一百分,这个分数十分危险,我于是又回头想T1,放弃了动态规划开始尝试贪心,最后也没有通过,赛时,我安慰自己,也许T1真的很难呢?也许其他人T1也都没有通过呢?考试结束后,我发现人均200+,我这个分数就是个垫底,出分后发现爆零了,爆零了,爆零了?我怎么会爆零呢?我怎么会爆零呢?我怎么会爆零呢?订正发现T2出现了一些玄学问题,我的同一份代码会出现不同的分数,老师对我模拟赛爆零的分析是:“有时候运气也是实力的一部分。”额,额,额,我只能说不好评价了
考试总结
考试时当场研发不会的算法其实是及其不理智的,在考试时输入输出应使用最保险的方式
Day 27 模考
考试分数
估分:0+70+0+0
实分:0+70+0+0
补分:0+70+0+0
考试时间戳
8:30-12:00
8:30 考试开始
9:30 发现T1的做法一点道理都没有
10:30 写完T2暴力
12:00 考试结束
考试总结
T1是一道构造的好题,T2十分简单的暴力就有一个的好成绩,通过一些人类智慧的优化可以优雅地变成正解,T3T4同学们一直认为很简单,但我赛时却怎么也想不出来,总结发现刷题量严重不足,一些经典题目在赛时都无法辨认出来
考试反思
这次考试
全营总结
刚开始只认为自己仅仅是几个知识点比较薄弱,现在发现自己根本就没有强项
我模拟赛爆过零
我模拟赛拿过rank1拿过rank2,虽然有一场模拟赛最后被取消了,但取消的模拟赛同是模拟赛
我被树链剖分毒瘤过
我被人机验证恶心过
我曾经当场研发离散化
我曾经当场研发可持久化线段树,虽然实现太差没有通过
我印象最深刻的是我很久很久以前就开始接触线段树,两年里它一直就一个我十分畏惧的东西,到现在我终于可以熟练掌握它了
很遗憾,这28天,我来到了杭州又离开了杭州,却并没有实现突破自我,但仔细想想,这确实是正常的,因为我摆烂了两年,在一个月的时间里把两年的债务还清是不现实的,但我在和同学们的交流中我懂得了如何在日常学习OI,接下来的不到三个月的时间里,我一定会重新找回那个对OI满心热血的少年
哦,我在这里还意外地发现了自己的擅长运动的一方面,虽然没运动几次
记于2025年的盛夏

浙公网安备 33010602011771号