題解:AT_abc375_d [ABC375D] ABA

Redamancy_Lydic發表於2024-10-13

十分簡單的計數題。

容易發現所謂長度為 \(3\) 的迴文串其實就是要找兩個相同的字元。所以我們不妨對字串的每一位分別考慮,計算以這一位為中心的迴文串的個數。

對於當前的這一位,我們列舉 \(26\) 個字母,計算每個字母對這一位的貢獻。具體的,我們對每個字母分別維護一個從前往後和從後往前的字首和,分別設為 \(sum\)\(rsum\)。設當前為中間的這一位下標為 \(i\),則字母 \(c\)\(i\) 的貢獻顯然就是 \(sum_{i-1}+rsum_{i+1}\)

累加答案即可。

提交記錄