一些离奇的错误

输入,人家是l,x,y,你整成了,x,y,l,关键半天没反应过来,对着正确答案一个一个字母改才意识到。(所以说有时候用例过了也不能确保没有出现这些小错误,如果数字一样,可能真也能过)

还有不要乱写return,搁花括号里面写了return,for循环就执行了一个就卡住了,也是对着正确答案一个符号一个符号找才发现顺序错了,人先有花括号才有的return。

思路有变改什么东西变量名的时候要改彻底删干净。

不要由于懒得起名字,而不小心起了重复的数组名,可以在纸上记录一下用了哪些变量名。

&&的优先级高于||,注意同时出现的时候不要嫌麻烦忘记加括号。

在合并时,你调用 unionn(i, j),但 unionn 的参数应该是 r1 和 r2(即 find(i) 和 find(j) 的结果),而不是 i 和 j。直接合并 i 和 j 会导致并查集的结构不正确。

  1. 并查集的树形结构不完整,部分节点无法正确指向根节点。

  2. 路径压缩可能无法正确执行,导致 find 时间复杂度退化。

  3. 某些本应合并的集合未被合并,导致连通分量统计错误。

解方程的题目别一上来就for循环穷举,咱先计算一下呢。人z=tanθ*x,原式是z^2+x^2,你怎么把z^2给忘了呢,结果分离不出来只能去穷举试了吧。

int 和 signed 在C++中是等价的,但 #define int long long 不会影响 signed,因此 signed main() 仍然返回 int

为什么 signed main() 可行?
  • signed 是 int 的别名(signed 默认就是 signed int)。

  • #define int long long 不会替换 signed,所以 signed main() 仍然是合法的 int main()

  • 这是一种 规避宏定义影响 的技巧,在竞赛编程中常见。

typedef long long ll + int main()最规范,避免宏污染

return 0 的位置错误

在 while(t--) 循环里,你写了 return 0,这会导致 程序在第一次循环后就退出,无法处理所有测试用例。
修正:移除循环内的 return 0,改为在 main() 最后返回。CAO半天没反应过来。还在想为什么这个终端停在了这个地方。

别老是由于之前思维的惯性而在改动时写错字母没改全。

写条件分支的时候有分就有收,不要漏掉该种正确情况下叉出的分支对应的无解,还是要单独再写一遍的。

ios::sync_with_stdio(false);
    cin.tie(nullptr);
添加了ios::sync_with_stdio(false)cin.tie(nullptr)加速输入输出

有时候编译错误可能是因为段落的复制出现了失误操作却没看出来没删干净,可能由于接到了行中间段尾,而出现了换行失败,所以看得不明显。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值