CSP可以吗?

Akano 发布于 2023-10-19 4 次阅读


魔法少女的契约 : 1 表示 “真,正确”,0表示 “假,错误”

文章内容可能有错误,实时更新后的博客 : here

  1. __int128 1
  2. 关闭流同步 1 $^{[1]}$
  3. #define int long long 1,但是不推荐
  4. __gcd() 1
  5. clock() 1,但是需要注意返回值在系统间的区别(使用 CLOCKS_PER_SEC)
  6. rand() 1,但是更推荐 mt19937,一个使用方法是 mt19937 rng(random_device{}()) $^{[2]}$
  7. fread,fwrite 1
  8. ifstream,ofstream 1
  9. __gnu_pbds内的所有内容 1
  10. 下划线开头的函数 大部分可以,除内嵌汇编(如 __asm)或有明确禁止行为的函数(见CCF 的官方公告
  11. 手动开启编译选项,如 #pragma,__attribute__ 0,不可以,总司令!(尤其是手动开启 $O2$ )
  12. 万能头文件 bits/stdc++.h 1,注意头文件引入的额外重名风险 $^{[3]}$
  13. using namespace std; 1,同上
  14. cerr/clog 1,cerr 虽然不会影响答案,但是会严重影响程序运行效率,提交前请注释
  15. assert 1,可以在提交时在代码开头写 #define NDEBUG,也推荐删掉所有 assert
  16. 这个变量名可以吗? 取决于你的代码最终能否在 NOI Linux 下编译,头文件和命名空间的使用也会影响最终结果
  17. CCF 评测姬效率如何 去年为 i7-8700k,具体情况请见题面注意事项
  18. 可以使用 memset 吗 1,尽管其效率不劣于暴力赋值,然而如果多次清空整个数组可能导致 TLE
  19. csp复赛能用快读快写吗 1,请见 $[1]$
  20. 需要 fclose() 吗 0,也不推荐写,与关闭流同步混用可能导致缓冲区未写入文件

[1] : 关闭流同步后不要使用任何 C 语言风格的IO,例如 scanfprintfputcharputsfreadfwrite尤其是 getchar,一个常见的错误是关闭流同步后使用快读快写。getline是可用的。

[2] : 同样可以写作 mt19937 rng(time(0)) ,亦或者是更精确的 mt19937(chrono::steady_clock::now().time_since_epoch().count())
[3] : 同样可以使用 bits/extc++.h

以上内容凭个人经验,选题来源于很多谷民重复的问题。其中不乏一些回答是错误的(点名 Chatgpt),故在此整理。

不保证所有内容一定正确,非常欢迎发现错误后在评论区指正,内容会在博客中更正。

祝各位 CSP-J/S RP++

此作者没有提供个人介绍。
最后更新于 2026-09-10