題目:click
看插頭dp看到的記錄一下。
問乙個迴圈的字串,也就是首尾相接的環形字串的字典序最小的運算元,每次可以把前面的乙個字元移動到尾部。
定義兩個指標變數i=0,j=1,k=0表示以i或者j開始長度為k的字串。
1:去比較s[(i+k)%n]與s[(j+k)%n]的大小
2:相等的話k++;
3:a:如果s[(i+k)%n]大的話,i+=k+1 相當於右移,j=i+1,k=0重新開始
b:否則,將j移動。
所有的終止條件i#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
#define max_len 50100*4
using
namespace std;
typedef
long
long ll;
char s[
10100];
intsolve()
if(temp>0)
i+=k+1
;else
j+=k+1;if
(i==j)
j=i+1;
k=0;
}return
min(i,j)+1
;}intmain()
return0;
}
最大最小表示法
時間複雜度 o n 應用 比較兩個環形串是否是同一字串 判重 判同分異構等 判同分異構 都化為最小或最大 看有幾個不一樣的就好了。放到set裡。最小表示法是我在看插頭dp的時候看到的乙個名詞,就先來看了一下這個演算法,還是蠻簡單的,有乙個首位相連的字串,我們要尋找乙個位置,從這個位置向後形成乙個新字...
最小最大表示法
乙個首位相連的字串,我們要尋找乙個位置,從這個位置向後形成乙個新字串,我們需要使這個字串字典序最小。有乙個字串str,下標為 0 len 我們這裡要i 0,j 1,k 0,表示從i開始k長度和從j開始k長度的字串相同 i,j表示當前判斷的位置 1 當str i k str j k 時 k 2 當st...
最小 最大 表示法
最小表示法是求與某個字串迴圈同構的所有字串中,字典序最小的串是哪個。比如說乙個字串jdrakioi,它長為8,也就是說最多有八種迴圈同構的方法。jdrakioi drakioij rakioijd akioijdr kioijdra ioijdrak oijdraki ijdrakio。這幾個串在原...