注意事项
2025-8-8 19:19:42
~sstdin
sstdin
sstdin
文件别写错
看清输入格式和输出格式
好好读题
想好细节确定做法严谨之后再写
程序所有分支都应该有输出/返回值之类的
仔细阅读数据范围,该开long long要开long long
分清叫xxx1的变量名和叫xxx2的变量名
线段树要开4倍空间
线段树要开4倍空间
线段树要开4倍空间
树状数组上倍增要判>n
线段树区间查询的时候可以if(x>y)return;但是单点修改的时候不可以,因为y是修改的值
枚举i的倍数的时候是j+=i不是j++
链式前向星数组要开两倍!
涉及到比较的东西不要乱取模
输入量大于1e6的时候要加快读
区间操作可以考虑差分
算直线在圆内部分长度的时候记得判圆与直线是否有交
树上静态链和不需要树剖线段树
卡常/乱搞不要魔怔,卡常注意不要卡wa
没有大样例要自己手玩几组
模数输入的时候要看有没有保证是质数!不要随便求逆!
dp数组不合法状态要有初值
左右移注意不要超过类型长度
点分治下一层的分治中心是刚找到的重心,不是当前遍历的子节点
在跑一个数的若干次方的时候可能需要开long long
求逆的时候想想能不能求
dfs的时候这层正在用一个数组就不能往下递归让下一层覆盖掉这个数组
&|^的优先级比< <= > >= ==低
看清模数
线段树pushdown的时候造成的影响是标记的值,不是1
分清i和j!
if没大括号要注意和else的匹配
编译完看warning!
<=不要打成<+
无向图要加反边
离散化lower_bound的时候范围是1-tot,不是1-n
不要滥用memset
圆方树数组要开两倍
同时维护最大值和次大值的时候更新最大值要把旧的最大值赋给次大值
treap节点初始需要随机权值
01bfs扩展0的时候应该放在队头
并查集/fhqtreap merge的时候需要找到根再merge
有些顺序比较重要的东西删除的时候要倒着删
分清整数和实数,不要因此丢精度或者ce之类的
bfs记得pop队列
分清continue和break
单调栈应该比较值,而不是下标
线段树区间操作的终止条件不是l=r
线段树分清节点编号/节点左右界/操作左右界
有向图网络流反边的权值是0
线段树记得pushup
memcpy的前两个参数不要搞反
输入文件是.in,输出文件是.out
pushdown的时候记得清零标记
merge记得写返回值
min_25的id函数的参数是ll,分为x>sqrtn和x<=sqrtn
注意边界条件!!!
注意所有可能影响复杂度的细节
分清运算符
筛 和 的时候不要忘记给位置1赋值
如果因为sqrt精度不够而手动二分平方根注意会不会乘法炸long long
预处理乘方的时候记得把下标0赋值为1
dijkstra的vis数组要用
dijkstra的pq的pair第一个数要负(或者用小根堆)
kruskal要排序!
不要在整数运算时用log2
eps应该是double,不是int
ab相等是fabs(a-b)<=eps,不是大于
线段树记得build
1不是质数
andrew求凸包要sort
unique之前要sort
diff的时候检查比较的是不是正确的文件
多测不清空,爆零两行泪
注意有向图还是无向图
分清l和r,x和y!!!
网络流加边的cnt从1开始
lower_bound不要忘记写第三个参数
lower_bound之前要排序
记得乘法之后取模!!!
分清n和m!!!
数!组!别!开!小!
数!组!别!开!小!
数!组!别!开!小!
哈希base用131或13331
主席树插入记得用pre更新现在的节点
分清==和!=
大整数运算不要用sqrt或者pow这一类函数
分块最后一块的右边界特判,并查集记得路径压缩,栈的top该清零要清零