NOIP 赛前指导
$\mathcal{MX2025} $ 集训 记录 也是 NOIP 赛前指导:
harvest one: 赛场解题流程
- 读四题
- 前两题细读
- 入手题目,手模样例,想暴力,先不写
- 想 \(10\min\) 关键性质/切入点,同时继续手模。
- 写出暴力/正解,逐渐简化与优化
- 检查前两题的细节
- 读后两题,研读部分分特殊性质,进行拼好分,由易到难。
- 检查细节,不要挂分
注意点:
- 想清楚再写,快速写,写完后按照思路检查一下,提高码的准确率
- 一定要注意关键性质,并尝试 hack 确保正确性
- 实在麻烦不可做的题目暴力解决
bug one: STL
- 有时候由于场上解法及其创新,致使我的 STL 致使不够用/运用错误。如
set有时无法正确地删除。
bug two: mind
- 我们需要清醒的心智,清新的心情,冷静的心态,理性的分析(当然需要感性的猜测,对性质的敏锐,至关重要),不做冲动的决定(想到一个做法/甚至是想法就去写码)。
- 写出正解后仔细思考边界,会不会爆个几十分,千万不要飘。
- 得分为王
bug three:对拍(\(10\min\) 内解决)
我貌似不太能拍出错误小样例。终于发现对拍假了:先依次运行 gen BF std 再 duipai
#include<bits/stdc++.h>
using namespace std;
int main()
{
while (1) //一直循环,直到找到不一样的数据
{
system("gen.exe");
system("BF.exe");
system("True.exe");
if (system("fc BFAns.out TrueAns.out")) //当 fc 返回 1 时,说明这时数据不一样
break; //不一样就跳出循环
}
return 0;
}
卡时:
- 时间单位转换:
clock()的差值单位是“时钟滴答数”,需通过CLOCKS_PER_SEC转换为秒(或毫秒)。若需毫秒级精度,可将sec乘以CLOCKS_PER_SEC后再与clock()差值比较。 - 时间限制合理性:
sec的值需根据实际需求设置(如竞赛中需预留输出、退出递归的时间,避免因限制过紧导致程序提前退出)。 - 适用场景:
clock适合时间精度要求不高的场景(如竞赛中“暴力算法+卡时”)。若需更高精度,可考虑std::chrono库(如std::chrono::high_resolution_clock)。
通过上述方法,可利用clock函数实现程序运行时间的限制,避免因超时导致程序无法完成执行。
if(clock()-t>=1.9*CLOCKS_PER_SEC){
cout<<ans<<"\n";
exit(0);
}
补一点:
睡好

浙公网安备 33010602011771号