Connecting...

NOIP 赛前指导

$\mathcal{MX2025} $ 集训 记录 也是 NOIP 赛前指导:

harvest one: 赛场解题流程

  1. 读四题
  2. 前两题细读
  3. 入手题目,手模样例,想暴力,先不写
  4. \(10\min\) 关键性质/切入点,同时继续手模。
  5. 写出暴力/正解,逐渐简化与优化
  6. 检查前两题的细节
  7. 读后两题,研读部分分特殊性质,进行拼好分,由易到难。
  8. 检查细节,不要挂分

注意点:

  • 想清楚再写,快速写,写完后按照思路检查一下,提高码的准确率
  • 一定要注意关键性质,并尝试 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);
}

补一点:

睡好

posted @ 2025-08-01 19:42  余亦宸  阅读(22)  评论(0)    收藏  举报