一些需要注意的点

  可能你死了都不知道你会怎么死的。

  这些错误我以前都没注意,然后死了。

  希望这篇文章能帮到你。

卡常

  • 模数用const
  • 读入优化

空间

  • 尽量多开一点点,比如用了长度为 \(n\) 的数组,空间就开 \(n+10\)
  • 有位运算特别是 \(xor\)\(or\) 时把数组开大一倍

精度

  • 如果精度要求特别高,比如绝对误差 \(\leq{10}^{-10}\),就要用long double

数据类型

  • 计算一下是否要用 long long(如果你担心会算错而且题目不卡常可以无脑用 long long

  • 在做乘法取模的时候一定要把所有数强制转换成long long再乘,因为你并不能清晰的记得这些变量是int还是long long

swap

  • swap交换数组时会交换两个数组内的所有元素而不是指针。

对拍

  • 一定要各种数据都试一下,小数据,大数据,边界情况。

  • 出数据时尽量避免几个量 \(n,m,q\) 相等的情况,特别是网格类的题。

  • 很多要取模的题可以在对拍的时候换一下模数(比如说换成特别小的模数),以检验是否有不该取模的地方加了取模,该取模的地方没有取模。

其他

  • 在求组合数的时候要特判 \(n<m\) 以及 \(m<0\) 的情况。
ll binom(int x,int y)
{
	return x>=y&&y>=0?fac[x]*ifac[y]%p*ifac[x-y]%p:0;
}
  • 多加小括号,否则可能你想写
  (1<<i)-1

会被解释成

  1<<(i-1)
  • 多加大括号,否则可能你想写
  if()
  {
      if()
      	;
  }
  else
    	;

会被解释成

  if()
  {
      if()
      	;
   	else
        	;
  }

dfs树

  注意重边带来的影响。

posted @ 2018-03-05 21:26  ywwyww  阅读(718)  评论(0编辑  收藏  举报