題意:找出字串之中所有符合$aabb$形式子串的劃分方式。
這道題正解是$sa$……我不會……
然而二分+$hash$可過……可過……
首先我們列舉每乙個$a$的長度,然後我們二分長度搞出來各個位置與上一段的$lcs$,$lcp$長度。隨後我們將$lcs$起點向左,$lcp$終點向右移動長度個字元,如果二者仍然沒有相遇,差分相加。最後相鄰的統計個數即可。
(語言說不太明白,還是上**吧)
1 #include2 #include3 #include4 #include5uoj219using
namespace
std;
6const
int maxn=50005,base=31;7
const
int mod=998244353;8
char
s[maxn];
9long
long
hash[maxn],t[maxn],u[maxn],v[maxn],ans;
10 inline long
long gethash(int l,int
r)11
14int
haha()
1535
int head=i-pos+1
;36 l=1,r=len,pos=0;37
while(l<=r)
3843
int tail=i+pos-1
;44 head=max(head+len-1,i),tail=min(tail,i+len-1
);45
if(head<=tail)
4650
}51 ans=0;52
for(int i=1;i<=n;i++)u[i]+=u[i-1],v[i]+=v[i-1
];53
for(int i=1;i1
];54 printf("
%lld\n
",ans);55}
56}57int sb=haha();
58int main()
至於$sa$寫法……以後再回來填吧……(有生之年系列)
拆分字串
拆分乙個字串,獲取每一組的key與value。如字串 qq adf f qewr98 eer d9adf t ad34 f qewrqr u adf43 gggg 2344 按照物件導向理念來解決,建立乙個物件 這個是對物件物件,有key和value兩個特性。我們需要把拆分好的資料臨時儲存起來,現在...
拆分字串
本函式可以將 目標字串 以 指定字串 進行拆分,並通過表結構返回結果。如下 create or replace type str split is table of varchar2 4000 create or replace function splitstr p string in varch...
拆分字串
拆分乙個字串,獲取每一組的key與value。如字串 qq adf f qewr98 eer d9adf t ad34 f qewrqr u adf43 gggg 2344 按照物件導向理念來解決,建立乙個物件 這個是對物件物件,有key和value兩個特性。我們需要把拆分好的資料臨時儲存起來,現在...