OI赛制小错误集锦

"一失足成千古恨,再回首已百年身"

为了防止这样的小失误导致一道题完蛋,我们特制此专栏收集各种小错误

  1. 文件名相关

freopen("surreal.in","w",stdout);

解决方法:在交之前先把每个小样例改成这个surreal.in,然后测试,再看看out的答案是否一致

坑点很高

手打输入输出文件名导致打错

还没犯过这样的问题

忘了去掉......0.in就是那个数字

最后测样例的时候改文件名而不是代码...

  1. 空间相关

一定要算空间一定要算空间!!!

51210241024就能转成空间

一个int4个字节,一个longlong8个字节,__int12816个字节,bool1个字节,char2个字节

就能差不多算出用了多少MB,用size.exe也能测,但是不能解决动态空间...QAQ

多少兆空间200200200200200*200*200*200个int的空间开不下

128mb限制下只能开16777216个longlong,3e8左右的int

MLE就哭吧

检验方法:size.exe

  1. 溢出相关

俗称的不开longlong见祖宗

add:读入第一行有两个数

结果一个必须开longlong一个不用开.....

add:i是循环时的变量,结果我们i*i会溢出

解决方法:

下下策:#define int long long

中策:用眼睛审视每个变量是否有溢出的风险

上策:卡着数据范围造组数据,看是不是答案异常

如果必须__int128就哭吧

  1. 取模相关

和溢出相关是结合的,真正要注意在于mod>1e9的时候

直接取模要注意int必带1ll*

  1. 编译相关

本地编译器就是吃屎了

改改dev中编译器成64位的

以及sort中的operator一定要加const!!

  1. 数据分治相关

暴力写挂,如果暴力是n2n^2的,那一定要跑跑大样例,如果暴力是2n2^n那么大概率只要算到所有情况就不会爆炸

某些写法导致大数据和小数据不匹配!

就是说类似于开了一个桶,但是这个桶在小数据规模下不会溢出,在大数据规模下会溢出!

  1. 数据结构相关

O(nn)O(n\sqrt n)的空间

线段树查询的时候左端点右端点都是0,即边界问题

树链剖分fa1=1,或者dep1=1之类的一个问题

  1. hash相关

当字符串长很短而字符串很多的时候双模hash也会被卡....

  1. 存边相关

不知道大家有没有犯过一个叫做多测/多个图的读入但是边的那个变量没有清空??

或者说多次建边但是这个边变量没有初始化

下次一定要注意改掉

  1. 爆char

即我们不要直接读入字符串进行处理

而是要转换成int再操作

m<=n1m<=n-1看成m=n1m=n-1

你wc就这么挂的

写了记忆化搜索不分析复杂度

wc就这么挂的

结构体自动对齐

大小为n的地址会对齐到n的倍数

网络流一定要分析图中边数上界!

首先因为我们要memcpy和memset,home数组不能开大了!

但是边数很可能到达4n4n,然后就RE了!!

点分治一定要小心求重心过程

建立构造一条链,i向i-1,然后看这条链的每层分治结果是不是对的

然后S是sizvsizv才对!