摘要:
題意:給定包含 `a,b,c` 的字符串,長度 $n \leq 2 \times 10^5$,求所有區間權值和,區間權值為出現次數最多字母的個數減去出現次數最少字母的個數(出現次數不為0)。思路:先統一式子,包含3種字母區間 $val_{l,r} = \frac{|c_a - c_b| + |c_b - c_c| + |c_c - c_a|}2$ ,包含2種字母區間 $val_{l,r} = |c_a - c_b|$ ,1種字母區間無貢獻。為簡化維護,貢獻乘2去分母,枚舉兩個字母 $A,B$ ,對于含 $A,B$ 區間算 $2|c_A - c_B|$ ,含三種字母區間減多余貢獻算 $-|c_A - c_B|$ 。枚舉區間右端點 $r$ ,用 $cnt_x$ 存差值為 $x$ 的區間個數及偏移量 $tag$ 從 $r - 1$ 轉移,時間復雜度為線性 。
閱讀全文