From 5e02d7a2f084a7089a1efc0335015b787e73fa12 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 28 Mar 2026 11:28:49 +0000 Subject: [PATCH 1/2] Initial plan From 9e0ad495584112bc0604741fc795c7a7188372a5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 28 Mar 2026 11:31:29 +0000 Subject: [PATCH 2/2] docs: simplify to CSP300 level and add algorithm sub-branches with 2024-2025 exam practice Agent-Logs-Url: https://github.com/kunlunlu1/cursor/sessions/0cbc06a9-4252-44c0-abde-4b4fcce270a6 Co-authored-by: kunlunlu1 <220282580+kunlunlu1@users.noreply.github.com> --- README.md | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 98 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7b94252..caa231b 100644 --- a/README.md +++ b/README.md @@ -1 +1,98 @@ -# cursor \ No newline at end of file +# CSP 300 分目标算法清单(精简版) + +下面内容只保留 **CSP 300 分目标**(主攻前 3 题)最常用的算法,不展开偏竞赛高阶内容。 + +## 1. 300 分目标怎么学 + +- **T1**:保证全对(模拟 / 枚举 / 简单数学) +- **T2**:主攻全对(排序、前缀和、双指针、基础贪心) +- **T3**:尽量全对(BFS/DFS、简单 DP、基础图) +- **T4**:能拿部分分即可(不作为 300 分核心) + +--- + +## 2. 大算法 + 小分支(按 CSP300 实用性) + +### 2.1 模拟 / 枚举 +- 线性扫描模拟 +- 多重循环枚举 +- 按题意状态更新(字符串、日期、矩阵) + +### 2.2 排序与贪心 +- 排序后扫描 +- 按规则优先(区间端点、最小/最大优先) +- 局部最优构造 + +### 2.3 前缀和 / 差分 +- 一维前缀和(区间和) +- 二维前缀和(子矩阵和) +- 差分(区间加、最后还原) + +### 2.4 双指针(你提到的重点细分) +- **滑动窗口**:最长/最短满足条件子数组、字符串窗口 +- **左右指针**:有序数组配对、去重、归并式扫描 +- **快慢指针**:链表环、链表中点、原地去重 + +### 2.5 二分 +- 有序数组二分(lower_bound / upper_bound 思想) +- 二分答案(可行性判断 + 单调性) + +### 2.6 搜索:BFS / DFS +- BFS 分层最短步数(网格、图) +- DFS 连通块 / 回溯(小规模) +- 图遍历基础(邻接表) + +### 2.7 动态规划(只保留 CSP300 常用) +- 线性 DP(如爬楼梯、最大子段和) +- **0/1 背包(重点)** +- 简单状态转移(二维 DP,不做高阶优化) + +> 300 分阶段可先不学:树状数组进阶、线段树复杂维护、网络流、数位 DP、斜率优化等。 + +--- + +## 3. 0/1 背包最小模板(C++) + +```cpp +// n 个物品,背包容量 W +// w[i] 体积, v[i] 价值 +int n, W; +vector w(n + 1), v(n + 1); +vector dp(W + 1, 0); + +for (int i = 1; i <= n; i++) { + for (int j = W; j >= w[i]; j--) { // 倒序,保证每件物品只用一次 + dp[j] = max(dp[j], dp[j - w[i]] + v[i]); + } +} +// dp[W] 即答案(或根据题意取 max(dp[j])) +``` + +--- + +## 4. 2024-2025 近年真题(建议加练) + +> 建议按“每套只做 T1-T3,限时 2~3 小时”训练。 + +- **2024 年场次真题** + - 2024-03:T1/T2/T3 + - 2024-09:T1/T2/T3 + - 2024-12:T1/T2/T3 +- **2025 年场次真题** + - 2025-03:T1/T2/T3 + - 2025-09:T1/T2/T3(如已发布) + +训练建议: +1. 第一遍按正式时间做; +2. 第二遍只复盘错题,标注算法归类(如“滑动窗口”“0/1 背包”); +3. 第三遍重写一遍最短可 AC 代码模板。 + +--- + +## 5. 复习优先级(只为 300 分) + +1. 模拟 + 枚举(必须稳定) +2. 前缀和/差分 + 排序贪心 +3. 双指针(滑动窗口 / 快慢指针) +4. BFS/DFS 基础 +5. 线性 DP + 0/1 背包