https://www.luogu.com.cn/article/46wz3f07

1.拿到题目,先观察第一页中是否存在有出入的地方,简单检查 pdf 是否出现不全的情况。

  • 是否有题目的类型不同
  • 是否有题目的时限和空间限制不同与常规情况,需要专门去注意的。

2.通读整个pdf,先了解清楚每个题要求你干什么。

  • 结合样例去读题,看看你读出来的题目和样例是否一致。
  • 可以结合暴力代码来验证自己的题目是不是对的。
  • 4道题整个过程应不超过 1 个小时或 1.5 小时。

3. 预期时间分配与每题目标期望得分。

  • 你对每道题考察什么样类型的题是否清晰了
  • 能否凑出自己心目中想要的分数档位。
  • 如果不能凑出,时间分配是否不太合理,需要调整
  • (梵神提议)想清楚再写 : 太多时候太冲动,没想过花时间到错误的算法上可能造成的后果。
  • 可以给自己一个缓冲的区间,如果你已经想到一个可以通过的代码了,不妨多给自己 5 分钟,看看是否存在更简单的思路。
  • 如果预期分配不合理,那么要及时调整,越晚调整效果越差。注意沉没成本
  • 例如:当你思路混乱的时候就开始写代码了,后面越写越能想明白,但是已经没办法回头了
  • 根据你对这个题目的要求与分配的时间,考虑是否可以把代码删了,重新设计。

4. 小技巧

  • 每几分钟(或喝水,伸懒腰)提醒自己是否发呆,发呆立刻切换。(上厕所调整,换大思路,写其他题等)
  • 写完之后可以把所有变量加到结构体内,通过 sizeofsizeof 函数计算所需内存。
  • 一定要手搓一组大样例,如果代码在加了 define int long long 与 不加的运行结果不一致,那么你要小心了。
  • 对每道题目开一份单独的文件夹,用来存放样例与各种文件(做好备份),将最终需要提交的文件复制一份放入提交文件夹当中。
  • 代码名字,模数等题目提供的常量需要复制,不要手敲,
  • 输出运行时间,查看是不是超过时间限制了。
  • 对拍的时候尽量不要写常数值,尽可能保证数据更随机,保证一定强度。可以多写几份 randrand 文件,生成的数据可以观察一会,是否存在不强的情况,例如答案一直是 -1。
  • 没啥思路先打表,可以帮助找出一定数学结论。
  • 代码 re了就可以批量注释,看看是哪个函数出问题了。
  • 如果想拿部分分的话,可以多写几个namespace,可以先分代码写,最后通过放入不同的namespace给组装起来。
  • 记得把所有调试语句关了。
  • 记得关同步流。
  • 最后十分钟检查各种情况,不要对代码中的变量进行修改,注意是否保存。可以关闭编译器重新打开文件来查看。

3 条评论

  • @ 2026-3-10 16:56:26

    ?

    • @ 2025-11-26 20:10:18

      提供一份我自己用的对拍

      #include<bits/stdc++.h>
      using namespace std;
      typedef long long ll;
      typedef pair<int,int> PII;
      void cmp(string s) {
      	string ord = "g++ -std=c++14 -O2 ";
      	ord += s + ".cpp -o " + s;
      	cout << ord << "\n";
      	system(ord.c_str());
      }
      signed main() {
      	string s;
      	cin >> s;
      	cmp(s);
      	cmp(s + "-bf");
      	cmp(s + "-gen");
      	int task = 0;
      	while(1) {
      		cout << "Task : " << (++ task) << "\n";
      		system((s + "-gen").c_str());
      //		cout << "gen\n";
      		system((s + "-bf").c_str());
      //		cout << "bf\n";
      		system(s.c_str());
      //		cout << "std\n";
      		cout << "fc " + s + ".out " + s + ".ans" << "\n";
      		if(system(("fc " + s + ".out " + s + ".ans").c_str())) {
      			cout << "Wrong Answer!\n";
      			return 0;
      		}
      	}
      }
      

      食用指南:需要手动开启 freopen

      代码用途 文件名称 输入文件 输出文件
      数据生成 xxx-gen.cpp xxx.in
      暴力程序 xxx-bf.cpp xxx.in xxx.ans
      疑似正解 xxx.cpp xxx.out

      代码在拍出第一组不符合的数据时会自动停止并退出,此时数据均保留在对应文件中

      👎 2
      • @ 2025-11-22 11:02:03

        👍 4
        👎 3
        • 1

        信息

        ID
        7
        时间
        ms
        内存
        MiB
        难度
        10
        标签
        (无)
        递交数
        6
        已通过
        0
        上传者