一些須要注意的點

  可能你死了都不知道你會怎麼死的。數組

  這些錯誤我之前都沒注意,而後死了。大數據

  但願這篇文章能幫到你。優化

卡常

  • 模數用const
  • 讀入優化

空間

  • 儘可能多開一點點,好比用了長度爲 \(n\) 的數組,空間就開 \(n+10\)
  • 有位運算特別是 \(xor\)\(or\) 時把數組開大一倍

精度

  • 若是精度要求特別高,好比絕對偏差 \(\leq{10}^{-10}\),就要用long double

數據類型

  • 計算一下是否要用 long long(若是你擔憂會算錯並且題目不卡常能夠無腦用 long longspa

  • 在作乘法取模的時候必定要把全部數強制轉換成long long再乘,由於你並不能清晰的記得這些變量是int仍是long long指針

swap

  • swap交換數組時會交換兩個數組內的全部元素而不是指針。

對拍

  • 必定要各類數據都試一下,小數據,大數據,邊界狀況。code

  • 出數據時儘可能避免幾個量 \(n,m,q\) 相等的狀況,特別是網格類的題。io

  • 不少要取模的題能夠在對拍的時候換一下模數(好比說換成特別小的模數),以檢驗是否有不應取模的地方加了取模,該取模的地方沒有取模。class

其餘

  • 在求組合數的時候要特判 \(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
            ;
  }

相關文章
相關標籤/搜索