2024A组
- 五子棋对弈:暴搜题,2^25,不会超,只用考虑最后的棋局情况,不用考虑,每一步的情况
- 训练士兵:贪心题,注意看数据范围,不开long long见祖宗,凡是涉及乘法都要注意有没有爆long long,一开始因为这,一分没有
- 团建:搜索题(含链式前向星建图),思考点在于将两颗树的搜索结合在一起,在一个函数里面进行两颗树的同时搜索,同时注意无向图的边数组要开两倍
- 成绩统计:二分+排序题(含方差等少量数学知识,还有前缀和),通过二分将查找的时间复杂度降到logn,通过排序将检查的时间复杂度降到nlogn。考察的知识点相当多
- 因数计数:数学题,不会写,但是别忘了暴力也能拿20%的分
- 零食采购:最近公共祖先题,树上的无权值的最短路,可以转化为两个点查找公共祖先,时间复杂度nlogn,否则查找所有的两点最短路是n^3,而且还不知道路径
- 封印宝石:线段树题,体力转化为在i~i+k的区间内查找最大值(区间查询),不能存放魔力值相同的宝石转化为维护次大值,取完之后宝石没有了转化为区间最大值修改为0(单点修改)
额外注意:开long long,无向图边数组开两倍,不会的题暴力拿部分分
线段树和LCA近几年都出过题
2023A组
- 幸运数:模拟题,电脑上算出来了,直接输出答案,千万不要放代码,不然电脑上超了1s没事,交上去就超时了,5分没了
- 有奖问答:暴搜题
- 平方差:高精度题,好像近几年也有两道,说明每个知识点尽量都掌握
- 更小的数:模拟/区间DP,两个都可以做,我用的模拟+双指针
- 颜色平衡树:启发式合并,只出过这一次,直接dfs暴力,60分走人
- 买瓜:dfs搜索+剪枝,3^n的时间复杂度要求剪枝,将数组排序加前缀和之后能过。对于除2,将每个数乘2之后保证了运算是整数
- 网络稳定性:kruscal生成树+LCA,一开始暴搜,但是因为是图,所以经常走重复路径,时间复杂度大,0分。将边权排序之后,图生成树,保证了搜索是O(n),再用LCA优化查询为O(logn)
- 异或和之和:位运算(拆位),暴力能拿80分
- 像素放置:dfs+剪枝,就算不剪枝,也能拿50分,所以就算是压轴题,也有暴力拿分的可能,千万不要放弃,12.5分呢
- 翻转硬币:数论,别碰,暴力50分走人,int可以开6e7
总结:填空题直接cout答案,压轴题别放弃,暴力说不定也能拿分,蓝桥杯256MB,最大可以开6e7的int数组(bool,bitset会更大)
kruscal,位运算近两年出过两道,不多。2023的题,dfs用的真多,dfs+剪枝太重要了
2023B组
- 日期统计:一开始用的瞪眼法,特复杂,正解是枚举每一个日期,与数列进行匹配
- 01串的熵:读懂题意就简单了,枚举
- 冶炼金属:二分答案
- 飞机降落:暴搜题,折磨死我了,一开始完全不知道怎么对时间下手,后来发现只要枚举出每一种飞机降落的顺序就行了,然后判断其可行性。(dfs时vector一定要引用,不然时空开销炸了,push_back之后再pop_back,记得每一次dfs后vis数组都要重新赋0,debug了半天)
- 接龙数列:dp,通过数字的首位和尾位进行方程转移
- 岛屿个数:dfs连通性搜索,这题比较特殊,先搜索外海,然后把内海当做连通的岛屿进行解题。太久没做都忘完了
- 子串简写:记录特殊元素的位置,并用双指针解题
- 整数删除:优先队列+链表记录左右关系,不过数据测试有点搞人,有时90分,有时100分
- 景区导游:基本是LCA模版题了,主要用于树上最短路,用dist数组记录每个节点到根节点的距离,从而用O(1)算出每个节点间的距离,一开始自己捣鼓用什么倍增记录距离,错都不知道错哪了,30分答案错了还不如别人暴力超时50分,气死了
- 砍树:同样LCA,对于两个节点的连通性,对它们间的边进行计数。直接用的上一题的代码,结果改了一下地方,把模版改错了,又气死我了
总结:LCA出了两道,神奇,dfs和dp得多练习练习,尤其是dfs,好久没做,都有点忘记了