先写流程卡,限时里不慌
这一课只练一件事:在比赛时间里,按固定的从读题走到提交。顺序是、写、编码、做,并。必会:能在限时内写一张流程卡、能预留检查时间、不跳过样例。最小示例:一次 40 分钟训练只做一道题。样例追踪:第 1 到 5 分钟审题并记下时间预算;第 6 到 10 分钟写下已知、未知和打算;第 11 到 32 分钟编码;第 33 到 36 分钟对照样例;最后 4 分钟做提交前检查。边界是不能拿到题就直接敲代码,也不能样例还没对照就提交。建议掌握:编码前先留下建模草稿,哪怕只有三行。拓展:把 40 分钟再拆成更细的分钟级时间片只是拓展习惯,现在不当硬门槛。这里不会在浏览器里运行 C++。
任务 1:先选出该怎么开始
先确定 40 分钟训练里该按什么开始,再确定写完代码后能不能跳过。点不认识的词可看基础解释。
必会:能说出为什么要先做;能说出为什么不能跳过样例。这里不会在浏览器里运行 C++,只练习选择和走过程。
40 分钟训练只做一道题。拿到题后第一步该做什么?开始顺序 · 必会
代码刚写完,样例还没对照过,该怎么做?不跳过样例 · 必会
任务 2:按审题、草稿、对照样例三步走完流程卡
最小示例:一次 40 分钟训练只做一道题。按顺序点三步:先,再写,最后编码并对。这里不会在浏览器里运行 C++。
必会:能解释每一步为什么这样做。边界:不要跳过审题直接编码;不要样例还没对照就提交。
- // 训练:40 分钟,只做一道题
- // 审题:圈 n 的范围,记下大约花 30 分钟写、留 4 分钟检查
- // 草稿:已知 n 和数组 a;未知是区间和;打算用循环累加
- // 对照:编码后先跑样例;样例对了再做提交前检查
三步走完了:范围圈出来了、草稿留下了、样例也对照过了。现在把审题的结果落到键盘上——题面给的是 n ≤ 100000,这一行要按它决定数组开多大;开小了,读入时就会。下面是只读脚手架,只留一空给你输入;这里不会在浏览器里运行 C++。
- // 40 分钟训练题:读入 n 个数求最大值,n ≤ 100000(审题时圈出来的范围)
- // 下标从 1 开始用,所以最后一个下标是 n
- // 格子数由审题时圈出的上限决定
- int main() {
- int n;
- cin >> n;
- for (int i = 1; i <= n; i += 1) cin >> a[i];
- int best = a[1];
- for (int i = 2; i <= n; i += 1) if (a[i] > best) best = a[i];
- cout << best << "\n";
- return 0;
- }
int a[100005]; // 审题圈出的上限是 100000,下标从 1 开始用,多开几位最后一格才不越界
任务 3:预留检查时间,并且不跳过样例
必会:提交前必须,并且不跳过。建议掌握:编码前先写下。拓展:把 40 分钟再拆成更细的分钟级时间片现在只需要认识,不当硬门槛。
必会 / 建议掌握 / 拓展:必会是写流程卡、预留检查时间、不跳过样例。建议掌握是编码前先写建模草稿。更细的时间片是拓展,现在不用当硬门槛。
- // 必会:最后几分钟留给检查,不拿去写新代码
- // 边界 1:样例还没对照,不能提交
- // 边界 2:样例对了也要再看一眼空数据和最大 n
- // 拓展:把 40 分钟拆成更细的分钟级时间片(现在不当硬门槛)
先选出提交前该怎么安排时间:
再选出样例该怎么对待:
任务 4:随机小测,看看你是否真的懂了
每次从本课题库抽出三道不同的选择题。题目与解析已通过校验,答完后看解析,不要只看分数;拿不准就回到对应任务再看一遍。