蓝桥杯赛前突击
# 蓝桥杯赛前突击
1.大纲精读
官方只支持 Dev-cpp 5.11 (和平时用的差不多)。
C++11的使用,在Dev-cpp 工具 里面选择 编译选项 输入 -std=c++11
并选择 编译时加入以下命令。
是支持使用 unordered_map
和 auto
的,还有 __int128
。
一定要记得 return 0;
去年听说是没 return 0;
直接省四,但一些人没 return 0;
又没事,不管是不是真的都要 return 0;
毕竟是一个好习惯。
提取出考点:
计算机算法:枚举、排序、搜索、计数、贪心、动态规划、图论、数论、字符串算法等。
数据结构:数组、对象/结构、字符串、队列、栈、树、图、堆、平衡树/线段树等。
2.考点分析
枚举,排序,搜素,贪心感觉都可以规划为(优雅的)暴力。
刷题可能刷到原题,原题可能来自于以下平台:洛谷题单,codeforces(英文题翻译成中文),牛客小白月赛,牛客周赛,atcoder ABC(翻译成中文)等。
省二+/省一-:
算法:
枚举:这个有难有简单的,近几年感觉有一个变难的趋势,但是差不多都离不开 日期和年份,多刷一点这方面的题就好了。
常用技巧:for循环, dfs, bfs, while 循环, next_permutation
,偶尔也需要 eps控制精度(去年), 前缀和, 差分, 双指针等
方式优化。
排序: 一般和贪心一块考,一定要学会自定义结构体排序 cmp
。
常用技巧:sort, cmp, merage_sort(求逆序对,基本没遇上过,遇到了也可以用离散化+树状数组水过去)
。
搜索:也是有难有简单,前年有一道扫雷(官网那个扫雷不是原题)可以说非常的阴间,多写题就会了。
常用技巧:染色, dfs, bfs
,染色的技巧还是挺重要的,一定要掌握。
贪心:对于这种题其实就是多练+猜结论,这种题又一般和思维,前缀和,差分,排序,区间问题,一同出现,多练典题就行了。
常用技巧:cmp + sort, 前缀和, 差分, 双指针, 区间处理
。
数据结构:
数组,结构体,队列,栈,这些都是基础,一定要会。
链表:这个可能会考,对于一些插入次数多以及删除次数多的可能会用到,大部分情况可以用三个数组模拟链表。
字符串:主要掌握STL string
的常用函数就行了,比如 s.substr, stoll, to_string
等。
树:这个考的比较少,大多数直接用存图的方式就可以模拟一棵树,所以直接去看图。
图:这个比较重要,一般掌握邻接表存图就行了,简单的拓扑排序
要会写。
堆:就是 priority_queue
,要掌握怎么重载结构体的 <
自定义大根堆和小根堆。
讲完了暴力,现在再讲一些其他的(其实掌握前面这些加一些简单数据结构就已经能够蓝桥杯省二甚至说蓝桥杯省一的水平了,前面有不会的一定要去补)。
省一+:
想稳定省一,前面提到的知识一定都要会,还有就是更难得部分。
算法:
动态规划:一定得掌握背包问题,其他一般都是考 线性DP
,动态规划的题不太好总结,总之多刷题就会了。
二分:非常经典的算法,难在能不能看出这是一道二分。
计数:考得简单就是前缀和双指针乱水就过了,难的话可能就和动态规划联系在一起。
图论:最短路算法 dijkstra, floyd
, 最小生成树 克鲁斯卡尔 prim
, 最近公共祖先(LCA)tarjan
等算法。
数论:欧几里得算法,扩展欧几里得算法,质数筛等。
字符串:字符串哈希,字典树,01trie,KMP等常见算法。
数据结构:
并查集:必须得掌握的数据结构。
树状数组:会简单用法就行,进阶用法掌握用维护差分数组 和 差分*i 数组 区间求和区间修改。
线段树:会解决基础的在线RMQ问题就行。
平衡树:会写一种就行。
3.比赛经验分享
比赛最主要就看一个心态,想不到正确写法就写暴力,想不到就暴力写法就打表输出几个样例。
前面填空题写不来就去看后面的题,题目太难了就挑一些简单的题做,保证会的题能全部写出来就行了,把所有会的题写完了,再去写不会的题。
对于会做的题,我们可以先写出一个代码,然后用样例本地测试,如果通过了样例,不要急着交,看能不能手造几组简单的样例,先手算一下再用计算机跑一下,看答案对不对,然后提交上去。手造样例过了不建议先跑对拍啥的,有点浪费时间,个人喜欢把对拍放在写完所有题之后。
对于不会的题,我们尽量只得一部分分就行了,所以直接写暴力,这里就不教大家怎么暴力了,如果不会就去多写写题,一些题可能不能写暴力,我们可以尝试打表 + if else 直接输出。
例题:
如果你不会DP, 那你可以暴力, 如果不会暴力,那就只能玄学乱搞了。
比如特判样例然后随便输出一个很有可能成为答案的数字。
最后能够得到 10% 的分数,比没有好。
关于对拍,网上有很多讲这个的,大家可以自己去搜。
自身比赛经历分享:
那天是周六上午,9:00开考,我很早就进教室了,不一会儿比赛开始了,老师先是把解压密码写在了黑板上,我试了好久尝试解压,结果密码一直不对,举手让老师来看,一时也没有发现什么,直到后面老师看到我解压的文件是2022年的,才知道我当时解压错了文件,解压成了去年的题目,这里已经耽误40多分钟了,但我不知道哪里来的自信,感觉问题也不大,让他们几十分钟也无所谓,然后是填空题阶段,第一个题想到了直接暴力8个循环,后面又发现可以优化成4个循环,然后就开始写,发现越写越寄,于是直接摆烂了,填了个 2023,第二个填空题看了,发现枚举一下就行了,奈何当时不会控制精度,也不会求 next_permutation
就能过,最后贪心应该就只有几分。然后去写第五个题,感觉是 DP ,但是不会写,于是写了个暴力,也只有几分,然后就去做第六题了,发现是两个BFS + 染色,于是直接开写,(应该过了),然后第七题,发现是个思维前缀和,非常经典的题目,于是秒了,当时赛场走了很多人,写完第七题感觉自己又行了,然后开写第八题,发现不会,于是又写了个暴力,估计也只有几分,第九题,也不是很会,赛时写了个 dijkstra
应该水了不少分,然后第十题没看,直接输出的样例。然后比赛就结束了,时间控制得也差不多。赛后估计只有 0 + 0 + 10 + 3 + 5 + 15 + 20 + 4 + 10 + 1 = 67
分左右,实际分数也就 60 左右,最后省一(可能去年最后 50 分左右就能省一)。
总结
本篇文章并没有讲具体的题目和什么算法,单纯就是教大家怎么在比赛的时候能够发挥出自己最好的状态。
其实就一句话:写题时专心,自己会的题尽量不错,不会的题尽量想办法得分。
最后预祝大家比赛顺利,超常发挥。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律