delicious的定義:當且僅當它的每乙個字元都屬於乙個大於1的回文子串中。
正向求出子字串符合delicious的不好求,我們思考一下,逆向的求出不符合delicious的子字串區間。如ab、aab、aaab、aa…b或者ba、bba、bbba、bb…a這樣的是不符合delicious的,其他的都符合。
這樣問題就轉換成了乙個字串裡面有多少不符合的子串。
用a_num代表正在遍歷的這段子串a的個數,b_num表示正在遍歷的這段子串b的個數。p始終指向遍歷的這段的開頭,然後迴圈遍歷整個字串。如果遇到了和p不同的(也就是ab\abb…其中的),就用總的子串減去相應的子串個數。
最後注意的是:因為是遇到不同的才開始減去,那麼最後一段是沒有處理的,所以需要最後處理一下(a_num>0&&b_num>0)。
#include
#include
char a[
10000000];
intmain()
p=a[i];}
if(a[i]
=='a'
) a_num++
;else b_num++;}
if(b_num>
0&&a_num>0)
printf
("%lld\n"
,tot)
;}
T4 咕咕東學英語(模擬題
題目解析 首先讓ans最大組合取ans n n 1 2.因為有這樣乙個字串,它的每乙個字元都屬於乙個長度大於1的回文子串中 所以回文子串組合,比如長度為5的字串 最多的子串組合,無非是 s1s2 s1s2s3 s1s2s3s4 s1s2s3s4s5 s2s3 s2s3s4 s2s3s4s5 s3s4...
程式設計CSP M3 補題 T3 咕咕東學英語
乙個只有大寫a b的序列,求這個序列有多少個子串是delicious的。delicious 對於乙個字串,它是delicious的,當且僅當它的每乙個字元都屬於乙個長度大於1的回文子串。第一行乙個整數n,代表序列長度 第二行乙個只含ab的字串 滿足題意的子串個數 對於這道題,我一開始是從正面下手,即...
T4 咕咕東學英語(Week12模測)
咕咕東很聰明,但他最近不幸被來自宇宙的宇宙射線擊中,遭到了降智打擊,他的英語水平被歸 零了!這一切的始作俑者宇宙狗卻毫不知情!此時咕咕東碰到了乙個好心人 tt,tt在吸貓之餘教咕咕東學英語。今天tt打算教咕咕東字母a 和字母b,tt給了咕咕東乙個只有大寫a b組成的序列,讓咕咕東分辨這些字母。但是咕...