HDU 5371 Manacher 暴力

2022-08-05 18:12:17 字數 810 閱讀 5078

1:先用manacher預處理出以a[i]為中心的所有最長迴文串的長度。

2:題目要求的子序列相當於兩個迴文串的疊加,暴力列舉第二個迴文串的中心。(稍微加點優化,不然就t了)

#include #include #include #include #include #include #include #define ll long long

#define for(i,x,y) for(int i = x;i < y;i ++)

#define ifor(i,x,y) for(int i = x;i > y;i --)

#define n 100010

using namespace std;

int str[n<<1],n,p[n<<1],cnt;

void manacher()

if(p[j] + i -1 >= mx)

p[i] = mx - i +1;}}

/**for(i,1,cnt) printf("%3d",str[i]);

printf("\n");

for(i,1,cnt) printf("%3d",p[i]);

printf("\n");

**/}int main()

str[++cnt] = 0;

manacher();

int ans = 0;

for(int i = 1;i <= cnt;i += 2)}}

}ans = ans/2*3;

printf("%d\n",ans);

}return 0;

}

hdu 5510 Bazinga(暴力)

problem description ladies and gentlemen please sit up straight don t tilt your head i m serious for n given strings s1 s2 sn labelled from 1 to n you...

HDU 1264 (暴力模擬)

題目 思路 直接暴力模擬,資料不大 建一個100 100的mp陣列 相當於塗格子 最後求格子的個數 求面積轉化為求格子數目 注意一下 變數i的取值,從0初始化 includeusing namespace std define ll long long define maxn 100005 int ...

hdu 3068 最長迴文 manacher

好的講解manacher演算法的文章, 並茂。 題意 求給定串的最長迴文子串 2009 多校題目 分析 列舉每個點向左向右擴充套件,看最遠能擴充套件到哪兒 但是普通的列舉是 n 2的,肯定超時。現在我們想 kmp或擴充套件 kmp一樣,給字串定義一個 nex陣列, nex i 表示以i 為中心最遠能向右擴充套件的長...