Lyndon分解
Posted xyj1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lyndon分解相关的知识,希望对你有一定的参考价值。
模板题:https://loj.ac/p/129
知识点:是while不是if
待填坑
code:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int MAXN = 2e6 + 5; int n; char s[MAXN]; int main() { //freopen("in.txt","r",stdin); scanf("%s",s + 1); n = strlen(s + 1); int head = 1,tem = 1,k = 2; while(head <= n) { tem = head; k = head + 1; while(k <= n && s[tem] <= s[k]) { if(s[tem] == s[k]) tem++; else tem = head; k++; } while(head <= tem) { head += k - tem; printf("%d ",head - 1); } } return 0; }
以上是关于Lyndon分解的主要内容,如果未能解决你的问题,请参考以下文章
hdu6761 Mininum Index // lyndon分解 + duval贪心 + 秦九韶算法