ACM 字串作業整理

2021-10-01 03:57:47 字數 1072 閱讀 5455

a、b、c:

kmp的模板題,注意資料範圍;

d:利用next陣列求迴圈節,可以注意到最大迴圈節的長度len為n - next[n];

如果n % len為0,則不用新增額外的字元,否則需要新增len - n % len 個字元

具體**與思路描述有差異,這與打法有關。

e:manacher的變形,只需要在更新回文串長度的時候保證單調即可。

f:manacher,字母轉換的時候,把26個字母看作乙個環,順序轉換即可。

g:manacher模板。

d:

#include#include#include#includeusing namespace std;

const int maxn = 100000 + 22;

int next[maxn];

int t,n;

char s[maxn];

void init_next()

return;

}void solve()

int main()

f:

#include#include#include#includeusing namespace std;

const int maxn = 330010;

char s[maxn],str[maxn];

char f;

int n,len,mr,mid,l,r,pos;

int p[maxn];

void init()

str[j ++] = '#';

len = j;

return;

}int manacher()

mid = i;

} }return ans - 1;

}void solve()

init();

int ans = manacher();

if(ans >= 2)

else printf("no solution!\n");

getchar();

return;

}int main()

字串作業

5 10x 5 13 y 1 a b x 9 5 x 12 x y 輸入月薪 num input input salary per month salary int num 12 print salary 複製100遍 a 愛你100遍 b a 100print b 到這輸出字串 a to be o...

字串作業

1.輸入乙個字串,列印所有奇數字上的字元 下標是1,3,5,7 位上的字元 例如 輸入 abcd1234 輸出 bd24 a abcjdnkwu11234jwe print a 1 2 2.輸入使用者名稱,判斷使用者名稱是否合法 使用者名稱長度6 10位 id name input 輸入使用者名稱 ...

字串作業

輸入乙個字串,列印所有奇數字上的字元 下標是1,3,5,7 位上的字元 例如 輸入 abcd1234 輸出 bd24 str input 請輸入乙個字串 x 0while x len str if x 2 0 print str x x 1輸入使用者名稱,判斷使用者名稱是否合法,使用者名稱的要求 長...