下面我直接按你3个月、12周、每天4--5h、C+++STL、5题制机考 的计划,逐周给你配好对应题目(题号+平台+难度+考点),你照着刷就行,不用自己找。
平台说明(全程只用这三个)
- 洛谷:luogu.com.cn(主刷,入门→普及→提高-)
- 牛客网:nowcoder.com(入门模拟、机考风格)
- CSP/CCSP真题:后期模拟用(和浙软机考风格最像)
第一阶段:基础筑基(第1--4周)
第1周:IO加速 + vector + string + sort(入门)
每天8道,共56道
洛谷入门(难度1~2星)
- P1000 超级玛丽(热身,必AC)
- P1001 A+B Problem(cin/cout/加速函数)
- P1425 小鱼的游泳时间(基础输入输出、计算)
- P5714 肥胖问题(if/else、浮点数)
- P1152 欢乐的跳(vector、遍历、绝对值)
- P1046 陶陶摘苹果(vector、循环、最值)
- P1093 奖学金(sort、结构体/多关键字排序)
- P1781 宇宙总统(string、比较、大数)
本周必背模板
- fastIO()
- vector 增删遍历
- string 读写、substr、compare
- sort(a.begin(), a.end())
第2周:stack + queue + map/unordered_map(枚举/计数)
每天7~8道,共50+道
洛谷入门→普及(2星)
- P1042 乒乓球(stack/queue模拟)
- P1996 约瑟夫问题(queue模拟)
- P1059 明明的随机数(sort+去重/哈希)
- P1102 A-B数对(unordered_map计数)
- P1601 A+B Problem(高精,string模拟)
- P1085 不高兴的津津(枚举、最值)
- P1226 【模板】快速幂(选做,基础枚举)
- 牛客:入门模拟场「字符统计」「配对问题」2题
本周必背模板
- stack push/pop/top/empty
- queue push/pop/front/empty
- unordered_map<int, int> cnt; cntx++
第3周:一维+二维前缀和(核心模板)
每天7道,共49道;每日手写2遍模板
洛谷普及(2~3星)
- P1035 级数求和(一维前缀和思想)
- P1147 连续自然数和(前缀和+枚举)
- P1546 最短网络 Agri-Net(二维前缀和入门)
- P2879 USACO07DEC Charm Bracelet(一维前缀和)
- P3397 地毯(二维差分/前缀和,经典)
- P1819 公共子序列(前缀和+字符串)
- P2004 领地选择(二维前缀和求最大子矩阵)
本周必背模板(默写)
cpp
// 一维前缀和
vector<int> s(n+1, 0);
for(int i=1; i<=n; i++) s[i]=s[i-1]+a[i];
// 区间 [l,r] 和:s[r]-s[l-1]
// 二维前缀和
vector<vector<int>> s(n+1, vector<int>(m+1,0));
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
s[i][j]=a[i][j]+s[i-1][j]+s[i][j-1]-s[i-1][j-1];
// 子矩阵 (x1,y1)-(x2,y2):s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1]
第4周:差分 + 基础综合(混合)
每天6~7道,共45道;区分前缀和/差分场景
洛谷普及(3星)
- P3397 地毯(差分经典,必做)
- P1719 最大加权矩形(二维前缀和+枚举)
- P1083 借教室(差分+二分,入门)
- P1908 逆序对(选做,归并/树状数组,可不深究)
- P1208 USACO1.3 混合牛奶(贪心+差分)
- P2845 USACO12DEC 逃跑的路径(前缀和+模拟)
- 牛客:「区间更新」「数组操作」专题2题
第二阶段:专题强化(第5--9周,中等题核心)
第5周:基础二分 + STL二分函数(lower_bound/upper_bound)
每天6道,共36道;模板每日默写
洛谷普及→提高-(3星)
- P2249 【深基13.例1】查找(二分模板)
- P1102 A-B数对(二分查找)
- P1678 烦恼的高考志愿(lower_bound)
- P1824 进击的奶牛(二分答案入门)
- P2678 跳石头(二分答案经典)
- P1020 导弹拦截(贪心+二分,最长不升子序列)
必背
- lower_bound/upper_bound 用法
- 整数二分模板(左闭右闭)
第6周:二分答案 + 综合(最大值最小/最小值最大)
每天6道,共36道
洛谷提高-(3~4星)
- P1824 进击的奶牛(复习)
- P2678 跳石头(复习)
- P1083 借教室(差分+二分)
- P1577 切绳子(实数二分)
- P2879 USACO07DEC Charm Bracelet(前缀和+二分)
- P3743 小鸟的设备(二分+枚举)
第7周:DFS 深度优先搜索(连通块/路径)
每天6道,共36道;递归+简单剪枝
洛谷普及→提高-(3星)
- P1706 全排列问题(DFS枚举)
- P1605 迷宫(DFS路径)
- P1596 湖计数(连通块)
- P2895 USACO08DEC 牧场设计(DFS+剪枝)
- P1048 采药(DFS暴力,后续DP优化)
- P1219 USACO1.5 八皇后(DFS经典)
必背模板
cpp
void dfs(int x, int y) {
if(越界/已访问) return;
标记访问;
处理当前点;
dfs(下一个方向);
}
第8周:BFS + 图论基础(queue+邻接表)
每天6道,共36道;迷宫/最短路径
洛谷提高-(3~4星)
- P1443 马的遍历(BFS最短路径)
- P1605 迷宫(BFS版)
- P1596 湖计数(BFS版)
- P2871 USACO07DEC Charm Bracelet(BFS+邻接表)
- P1126 机器人搬重物(BFS+状态)
- P1090 合并果子(选做,优先队列)
必背模板
cpp
queue<pair<int,int>> q;
q.push({sx,sy});
vis[sx][sy]=1;
while(!q.empty()){
auto [x,y]=q.front(); q.pop();
for(四个方向){
nx=x+dx[i], ny=y+dy[i];
if(合法且未访问) {vis[nx][ny]=1; q.push({nx,ny});}
}
}
第9周:基础动态规划 DP(线性/背包)
每天6道,共36道;只抓基础,难题跳过
洛谷普及→提高-(3星)
- P1025 数的划分(线性DP)
- P1048 采药(01背包)
- P1049 装箱问题(01背包)
- P1226 【模板】快速幂(选做)
- P1802 5倍经验日(01背包变形)
- P2871 USACO07DEC Charm Bracelet(线性DP)
必背模板
cpp
// 01背包
vector<int> dp(V+1,0);
for(每个物品)
for(int j=V; j>=w[i]; j--)
dp[j]=max(dp[j], dp[j-w[i]]+v[i]);
第三阶段:模拟冲刺(第10--12周,机考实战)
第10周:适应模考节奏(每天1套5题)
来源
- 洛谷:普及+提高- 混合赛(5题/套)
- 牛客:保研机考模拟场(5题)
- CSP-J 2019--2023 真题(每天1套)
时间规则
- 限时2.5h,不准IDE调试
- 签到≤10min,中等≤30min/题
- 复盘:思路/STL/边界/超时
第11周:薄弱模块补强(错题+专项)
- 统计10周错题,同类题每天加练2道
- 保持每天1套5题模拟(同10周)
第12周:考前保温(重做旧题+默写模板)
- 不刷新题,只做错题+经典旧题
- 每日默写所有模板(IO/前缀和/差分/二分/DFS/BFS/背包)
- 固定做题顺序:签到→中等→中等→暴力写4/5题
最后:我可以直接给你做成「每周打卡表」
包含:
- 每日题号+链接
- 预计用时
- 必背模板
- 错题记录栏
要不要我把上面内容整理成一份可直接打印的12周打卡清单(含每日链接)?你直接照着勾就行。