HDU 4552 怪盜基德的挑戰書 字尾陣列

2021-06-27 14:11:38 字數 1245 閱讀 7917

傳送門:【hdu】4552 怪盜基德的挑戰書

題目分析:答案就是所有字尾和串s的lcp長度相加。字尾陣列搞定。

**如下:

#include #include #include using namespace std ;

typedef long long ll ;

#define rep( i , a , b ) for ( int i = ( a ) ; i < ( b ) ; ++ i )

#define for( i , a , b ) for ( int i = ( a ) ; i <= ( b ) ; ++ i )

#define rev( i , a , b ) for ( int i = ( a ) ; i >= ( b ) ; -- i )

#define clr( a , x ) memset ( a , x , sizeof a )

#define cpy( a , x ) memcpy ( a , x , sizeof a )

const int maxn = 100005 ;

char s[maxn] ;

int t1[maxn] , t2[maxn] , c[maxn] , xy[maxn] ;

int sa[maxn] , rank[maxn] , height[maxn] ;

int dp[maxn][17] ;

int cmp ( int *r , int a , int b , int d )

void getheight ( int n , int k = 0 )

}void da ( int n , int m = 128 )

getheight ( n - 1 ) ;

}void init_rmq ( int n ) }}

int rmq ( int x , int y )

int lcp ( int x , int y )

void solve ()

int main ()

上面的**用了rmq,但實際上是不需要的,那是我對字尾陣列的不了解造成的。其實只要從rank[0]向兩邊掃就ok了的。

**如下:

void solve () 

y = x + 1 , t = maxn ;

while ( y <= n )

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

}

HDU4552 怪盜基德的挑戰書

problem description 在樹最美麗的那天,當時間老人再次把大鐘平均分開時,我會降臨在燈火之城的金字塔前,帶走那最珍貴的笑容。這是怪盜基德盜取巴黎羅浮宮的 蒙娜麗莎的微笑 這幅畫時,挑戰書上的內容。但這次,怪盜基德的挑戰書上出現了一串串小寫字母 aaab sdfeeddd.柯南以小學生...

怪盜基德的挑戰書 HDU 4552

在樹最美麗的那天,當時間老人再次把大鐘平均分開時,我會降臨在燈火之城的金字塔前,帶走那最珍貴的笑容。這是怪盜基德盜取巴黎羅浮宮的 蒙娜麗莎的微笑 這幅畫時,挑戰書上的內容。但這次,怪盜基德的挑戰書上出現了一串串小寫字母 aaab sdfeeddd.柯南以小學生的眼睛,超凡高中生的頭腦,快速統計各種字...

NENU 怪盜基德的遊戲

description kid和新一開始玩乙個有趣的遊戲。遊戲規則是這樣的 在乙個n m棋盤中,某個位置有一顆棋子,並且有些位置是不能走的。現在兩個人輪流操作,每次可以將棋子向上下左右的格仔裡走一格,不能走出邊界。若一方不能行動,或者走到了已經走過的格仔,則算失敗。現在給出棋盤的初始狀態,柯南先行。...