OI注意点(写给自己看)
赛时额外注意点:
-
防止 CE,MLE 和 RE。
-
检查变量名或函数名字母打错,检查未初始化和特殊标记的数组。
-
OI 赛制别冒险(尤其是大赛),别把无把握的算法去试验(惨痛教训:CSP-S 2021 T1 用了不确定的三分,浪费许多时间,还少了 15pts)。
-
时间复杂度需算对(宁可用计算器),不能马虎。
-
审题不能审错。
-
不出现格式问题,不把调试代码留下来,要及时注释。
-
千万别作死写 system("pause"),否则直接爆零。
-
一定要写文件输入输出的两个 freopen,一定要写对文件名。
-
做法不能想假,一定要确认正确再敲代码。
部分初赛内容:
-
lowbit 指二进制下从低往高看,第一个一所代表的数,如 lowbit(2)=2,lowbit(3)=1,lowbit(256)=256,lowbit(-x)=lowbit(x)。
-
Base 64:把明文的每三位转换为四位的密文,若原串长度不为三的倍数,则在后面补1或2个等号再运算,即密文长度必为 4 的倍数。
-
与比或的运算级高,即先算与,再算或。
-
模运算结果的正负与模数无关,如:4%-3=1,-4%-3=-1,-4%3=-1.
-
希尔,快排,堆,选择排序不稳定。
平时注意点:
-
能不用 puts 就不用,避免奇怪错误。
-
能不用 %c 格式符就不用。
-
仅 memset 可以 0x3f 填充,否则不能作为最大值(0x3f 实为 256,要写最大值只能写成 0x7fffffff),
-
01trie 许多涉及到的变量只能用 bool。(多数时候能用 bool 就用 bool)
-
写字符串尽量从 1 开始存。(至少目前为止,我的字符串模板代码都是按从一开始存写的)
-
树链剖分除了存 dfn,还要记反序 mat 数组,建线段树时涉及到原数组的不能用 dfn,要用 mat。
-
可持久化线段树,01trie 等部分结点数字前要加 &。
-
有时候存在多组数据且数组内存较大时,不能用 memset 清空,要手动清。
-
若要写快读,read 需考虑负数,且不能读到不是数字的就记为负数,只有读到减号才可以。
-
不卡常时,尽量不用快读快写。
-
用 ios::sync_with_stdio(0) 后,不能用格式化输入输出。
-
不可直接输 rand()。
-
尽量不写 floor 和 ceil,防止出现精度问题。
-
getchar 需慎用。
-
unique 需写成这样:n2=unique(b+1,b+1+n)-b-1。(有减一)
lower_bound/upper_bound 写成这样:int op=lower_bound(b+1,b+1+n2,a[i])-b。(无减一) -
不出现 next,time,hash 等变量名或函数名。
-
(此条不是特别重要)尽可能不用 queue,stack 等无用 STL 容器。(若是写SPFA时,还是用下吧,不想写循环队列)
-
一些函数操作先在主函数里写好,再去写具体内容(宁可忍受 VSCode 编译错误的波形曲线,不然的话可能会因为没执行函数而半天调不出错误,特别是 OI 赛制时如此做会酿成大祸)。
-
题目要求输出的字母或单词尽量不手打,而是复制题目中原有的。
-
写 SPFA 若不用 STL,数组至少开十倍。
-
取模时不应写成:ans%=mod。而应写成:ans=(ans+mod)%mod。
-
取模时谨防数溢出范围,应及时取模。
-
用位运算的时候,如果有容易爆 int 的地方,变量的范围开大还不够,左移时也要注意强制转换,如 1<<n 应写成 1ll<<n,1ull<<n 等。
-
一定要注意数据范围55555,遇到毒瘤出题人开 long long 还不够,要开 ull,记牢各整型的范围啊:
- int:
。 - long long:
。 - unsigned long long:
。
所以说一些出题人弄个 2^64,就连 ull 也不够,输出时要以字符串方式输出,如果中间过程要用更大,干脆高精吧。
- int:
-
平衡树的选择:裸的平衡树替罪羊、Treap任选(不熟练),Splay只用来维护区间和LCT,其余情况容易被卡(还不会,非旋 treap 基本可替代 splay,且速度更优)55555。
26.multiset 和 multimap erase操作一次会删多个(要删单个得先 find,再用 erase 删地址)。如 multiset 有 {1,1,2,2,2,3},erase(2) 后会变成 {1,1,3}.
- BIT套主席树空间常数为 0.5(因为树状数组可以看作去掉所有右子结点的线段树)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律