写题时的破防瞬间
经典永流传
记一些做题时卡了很久的奇奇怪怪的点:
调题篇
-
认真审题
-
取模!!!取模!!!取模!!!
-
数组还是比较快的,有事没事别用
和 _ (存图还是用链式前向星吧,少用 ) -
十年OI一场空,不开
*** -
注意数据范围,双向边开两倍,线段树开四倍,线段树合并开
倍 -
能用
别开 ,要不然可能 -
变量重名引发的惨案(全局开过了函数里再开一遍引发奇妙错误)(
NOIP2021/fn) -
循环手残打错后 和 傻傻不分(其实还有 和 ) -
多组数据记得清零,不止数组,还有必要的
、 、 …… -
图论的边、数据结构的数组编号从
还是 开始 -
强制在线更新
-
数据结构询问区间不保证
-
赋值运算符与等于号不分(
和 傻傻不分) -
运算优先级(养成好习惯,多加括号)
-
局部变量未赋初值
-
如果反复
太慢了,那么尝试在循环里顺便清零,或者再做一遍逆操作复原 -
每天一个好习惯:
自定义比较函数 用引用传参 ( &a)真的会快很多啊啊啊 -
结构体里数组不要开太大,上次高精玄学错了好久
-
变量都开
,快读快输忘开 -
里套 容易被卡常? -
输出格式(是否漏打换行)
-
变量突变了,一般是越界,并且怎么有可能乱飘到别的数组里啊啊啊啊啊啊啊(队长忠告,多用
,自动分配空间) -
中赋了极大/极小值,加减乘除的时候小心炸,或是例如极小值加了一个数导致发生变化。 -
当你觉得你写的所有部分都一点问题没有的时候,可能确实如此,因为可能还有你没考虑的情况。
-
算时间限制的时候别忘了空间限制。
算法篇
-
求欧拉路径
回路的字典序最小方案, 时在回溯时倒序存经过的点,输出时正序输出,避免自环最后走不到 -
二分上下界
-
结论题是否存在特例
-
利用倍增
求树上任两点距离,区分节点深度与到根的路径长 -
链式前向星的成对变换
先赋成 -
字典树中初始时
-
结论题打表找规律显然比人类智慧要轻松
-
取对数可以把大数乘法转化为加法
-
保证精度慎用除法
-
深搜递归边界
-
有时自然溢出是个不错的选择(一般用180181327不会被卡,别问我是怎么来的) -
重复要用的东西预处理
-
搜索内部用以记录每一层状态的数组 / 变量千万别开全局,否则覆盖掉就g了
-
数据结构下传懒标记想清楚优先级与下传方式
-
线段树大常数可以用树状数组代替
-
线段树合并的两种写法
-
虚树建边的时候注意方向,或者直接暴力建无向边,还有什么
重构树、圆方树,如果建完以后发现 进不去,有可能只建了单向边 -
初始状态的设定(记搜写法是递归边界) -
数位
中判断一个状态是否访问过不可简单判dp数组是否为 ,否则当前状态答案为 时时间复杂度gg,最好加一个 数组 -
关于斜率优化:①若直接用
判斜率,注意除以 时返回极大值;若用乘积形式判斜率,注意乘负数会变号,爆 时要开 。②在凸壳中加新的点时,与 和 比较都可以。③判断斜率大小最好加等号。 -
差分约束建超级源点
与所有点连长为 的边,所以点数变为 ,判负环的松弛次数至少为 -
点双注意是否有孤立点连自环
-
线段树的懒标记有时不能简单地判是否为
,有时需要对 取模时, 变为 就下传不了了
本文作者:Semorius
本文链接:https://www.cnblogs.com/Semorius/p/17538275.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步