坑_____经验总结

来源:互联网 发布:数组中删除指定元素 编辑:程序博客网 时间:2024/06/05 18:16
  • 不熟的话最好别乱缩行,运算符优先级很坑的……
    大致上顺序是这样算术运算->位运算->逻辑运算
    附上运算符优先级表

  • 再次强调,千万注意运算优先级,不行的话打个括号都好 :-)

  • 用数组模拟邻接表时,要是是无向图,注意边要开两倍以上空间。

  • 比赛时千万要记得写文件操作,血的教训……

  • 要是要用到宏定义来简化代码中的重复式子,注意整个式子加个括号(是整个式子加括号,免得程序里面优先级出问题,比如线段树中写成#define Mid l+r>>1的话,程序里面实际的Mid+1就变成l+r>>2了),应该写成#define Mid (l+r>>1)。(位运算优先级比算数运算低,所以会出问题)

  • 想在程序中简写变量类型,最好用typedef,用宏定义#define可能会有些小问题,具体例子:typedef long long LL;

  • 用hash时最好用不常用的质数做模数(千万不要用1000000009这种),比如要是你发现你的QQ号或手机号是质数而且长度也还能接受,那么就可以选它们了。

  • hash时注意要在合适的地方”%“一下,不然出现负数gg 了,也可以考虑用 unsigned long long,它不仅长度够长,而且减到负数的时候会自动帮你模一个数,好像是2^64吧,就不怕出现负数的错误了。

  • 要是想用switch(),记得每个case末尾要写break;

  • 在我看来,打程序时最好分步来打,就是说把整个程序分成几部分,调好这一部分再继续开始打下一部分的程序 (比如对于一个线段树模板题,先写好建树并确保无误后再往后写修改,好了之后再写查询等) ,这样可以有效避免出现那种潇潇洒洒打完一百多行结果编译不过或者死循环,又怎么找都找不出错的情况。

  • 注意各种变量在cstdio中输入输出的关键字

类型 scanf关键字 printf关键字 说明 int %d %d unsigned int %u %u long long %lld %lld
%I64d Linux系统
Windows系统 unsigned long long %llu %llu
%I64u Linux系统
Windows系统 float
double %f
%lf 都用%f %.nf是保留n位小数输出 char %c %c char[] %s %s 字符数组前不用加”&”,比如:
scanf("%s",a)
其中a为一个字符数组(c式字符串)
2 0
原创粉丝点击