BZOJ3160 萬徑人蹤滅

2022-08-13 00:09:28 字數 530 閱讀 9973

設a[i]=bool(s[i]=='a'),b[i]=bool(s[i]=='b'),考慮a和a、b和b的卷積,由於卷積是對稱的,就可以統計出不連續回文子串個數了。可能說得比較簡略。再用manacher算出連續回文子串個數並減去。

#includeusing namespace std;

const int p=1e9+7;

const int n=1<<18;

typedef double flo;

const flo pi=acos((flo)-1);

struct vec;

vec operator+(vec a,vec b);}

vec operator-(vec a,vec b);}

vec operator*(vec a,vec b);}

void fft(vec*c,int n,int d)

for(int i=1;i=k)

(s+=p-f[i]/2)%=p;

} printf("%d\n",s);

}

BZOJ3160 萬徑人蹤滅

對於每個可以作為對稱軸的位置,我們算出以其為對稱軸有多少對位置和字元是對稱的,設為t i 若不考慮不能連續,則我們可以從這t i 對里任選出來任意對,都是可行的答案,且不重不漏,所以不考慮不能連續的情況的答案為sigma 2 t i 1,考慮不能是連續子串,再減去回文子串的數量即可 回文子串數量ma...

BZOJ 3160 萬徑人蹤滅

給定乙個由 a 和 b 構成的字串,求不連續回文子串行的個數。正難則反我們考慮容斥。對於連續的回文字串顯然是一次馬拉車就可以很好的求出來的,那我們設f i 表示以i為中心的對稱字元對數量,顯然答案就是 2 n 1 12f i 1 那麼我們的問題就轉變成了怎麼求出f i 我們考慮當這個字元為a的時候做...

bzoj3160 萬徑人蹤滅

題目在上方鏈結 description input output sample input sample output hint source 2013湖北互測week1 首先將字串中間插入 把他們分隔開 題目要求求不連續的回文串的個數 那麼就用總數減去連續的即可 考慮連續的部分 直接用manach...