傳送門
這道題顯然可以用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以內。輸出輸出所有的回文子串,每個子串一行。子串...