落谷P1872 回文串計數 回文樹

2022-05-11 15:58:20 字數 848 閱讀 5375

傳送門

這道題顯然可以用pam做出來。

pam可以算出以字串的第ii個字元為結尾的回文子串的個數。我們將其存到乙個陣列l[n],再求乙個字首和就可以把字串的前i個字元的字首有多少個回文子串求出來。

然後,我們將pam清空,倒著做一遍,就可以求出以第i個字元為左端點的回文子串個數r[i]。與它不相交的回文子串且在它前面的子串有l[i - 1]個,相乘再累加就是答案。

此題在落谷的評級是綠,那是因為此題資料範圍只有2000,不用pam也可以做。但此題可以當做pam入門的練手題。

#include #include 

#include

#define ll long long

using

namespace

std;

const

int n = 200000

;struct

plalindromic_treept[n];

intlst, tot;

char

s[n], ss[n];

void

build()

int add(int c, int

n)

return lst =pt[p].go[c];

}ll r[n], ans;

intlens;

intmain()

//cout<< endl;

memset(pt, 0, sizeof

(pt));

build();

for (int i = lens; i > 1; i--)

cout

}

1154 回文串劃分

1154 回文串劃分 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 收藏 關注 有乙個字串s,求s最少可以被劃分為多少個回文串。例如 abbaabaa,有多種劃分方式。a bb aabaa 3 個回文串 a bb a aba a 5 個回文串 a b b a a...

1524 回文串判定

problem description 輸入一串字元 長度小於100 判斷該串字元是否是回文串 正序讀與逆序讀內容相同 input 輸入一串字元 長度小於100 output 若該串字元是回文串輸出 yes 否則輸出 no example input asdfgfdsa example output...

34 回文子串

總時間限制 1000ms 記憶體限制 65536kb 描述 給定乙個字串,輸出所有長度至少為2的回文子串。回文子串即從左往右輸出和從右往左輸出結果是一樣的字串,比如 abba,cccdeedccc都是回文字串。輸入乙個字串,由字母或數字組成。長度500以內。輸出輸出所有的回文子串,每個子串一行。子串...