蓝桥杯**C++ B组(省赛)**的题目难度适中,但考察范围广,尤其注重**基础算法+思维灵活性**。以下是针对**C++ B组省赛**的核心考点和备赛建议,结合近年真题整理:
一、省赛高频考点(按优先级排序)
1. **暴力枚举+优化**
- **必考**:占省赛30%~40%的题目,尤其是前几题。
- 典型题:数字排列、日期计算、简单模拟题。
- **优化技巧**:减少循环层数、前缀和、双指针。
- 例题:
- 求满足条件的四位数(如各位数字之和为特定值)。
- 日期问题(判断两个日期之间的天数)。
2. **动态规划(DP)**
- **重点**:背包问题、线性DP、二维DP。
- 常见题型:
- 01背包(如资源分配问题)。
- 最长上升子序列(LIS)及其变种。
- **注意**:省赛DP题通常不需要复杂优化(如单调队列),但需熟练状态转移方程。
3. **搜索(DFS/BFS)**
- **DFS**:全排列、组合问题(如选数求和)。
- **BFS**:迷宫最短路径(带障碍物)、状态转移(如八数码)。
- **剪枝技巧**:记忆化搜索、可行性剪枝。
4. **贪心算法**
- 区间调度(如活动安排)。
- 排序+贪心(如最小延迟调度)。
- **易错点**:贪心策略的证明(省赛可能考直观贪心,无需严格证明)。
5. **数论与数学**
- **质数相关**:判断质数、筛法(埃氏筛)。
- **公约数与公倍数**:GCD/LCM、欧几里得算法。
- **快速幂**:求大数幂次取模(如 \(a^b \mod p\))。
6. **数据结构**
- **栈与队列**:表达式求值、滑动窗口。
- **并查集**:连通性问题(省赛较少考,但需掌握基础)。
- **树**:二叉树遍历(前序/中序/后序)。
---
二、省赛特有规律
1. **输入规模小**:
- 多数题目的数据量 \(n \leq 10^3\),允许\(O(n^2)\)暴力解法。
- 例如:直接枚举所有可能的子区间。
2. **坑点提示**:
- 边界条件(如n=0或n=1)。
- 输出格式(如末尾空格、换行符)。
3. **真题示例**(近年C++ B组省赛题):
- **2023年省赛**:
- 题1:数字反转(模拟)。
- 题4:背包问题(01背包变形)。
- **2022年省赛**:
- 题6:迷宫BFS(输出路径)。
- 题8:数位DP(统计数字出现次数)。
---
三、备赛策略(短期冲刺)
#### 1. **必刷题目类型**
- **每日至少3题**,覆盖以下优先级:
1. 暴力枚举(确保前3题全对)。
2. 动态规划(背包、LIS)。
3. DFS/BFS(模板题)。
#### 2. **代码模板速记**
- **质数筛法**:
bool is_prime(int n) {
if (n <= 1) return false;
for (int i = 2; i <= sqrt(n); i++)
if (n % i == 0) return false;
return true;
}
- **01背包模板**:
int dp[1005]; // dp[j]表示容量为j时的最大价值
for (int i = 0; i < n; i++) {
for (int j = m; j >= w[i]; j--) {
dp[j] = max(dp[j], dp[j - w[i]] + v[i]);
}
}
```#### 3. **时间分配建议**
- 前1小时:快速AC简单题(模拟、数学)。
- 中间2小时:攻克DP、搜索题。
- 最后1小时:检查边界条件,优化暴力代码。
---
### **四、避坑指南**
1. **避免过度优化**:
- 省赛通常不需要线段树/树状数组,优先用暴力+剪枝。
2. **输入输出加速**:
- 使用`ios::sync_with_stdio(false); cin.tie(0);`关闭同步流。
3. **调试技巧**:
- 输出中间变量(如DP数组),避免逻辑错误。
---
### **五、推荐练习题库**
1. **蓝桥杯官方练习系统**(历年省赛真题)。
2. **洛谷**:搜索“蓝桥杯”标签,筛选B组题目。
3. **AcWing**:蓝桥杯辅导课(含C++ B组专项)。
---
**总结**
**C++ B组省赛**的核心是**稳拿暴力分+突破DP/搜索**。备赛时优先掌握:
1. 枚举优化(50%分数)。
2. 动态规划(30%分数)。
3. 搜索与数学(20%分数)。