奶牛序列

L. 奶牛序列

題意

  • 約翰剛幫奶牛們拍完照,拿着合影的他,看着奶牛隊列,又莫名想到了一個字符串問題:
    我們將n頭奶牛的隊列看成一個長爲n的字符串S,讓Ti表示從第i的字符開始的後綴。求: 圖片描述
  • 其中,len(a)表示字符串a的長度,lcp(a,b)表示字符串a和字符串b的最長公共前綴,輸入字符串長度不超過5e5

分析

    • 首先前面的len(Ti)和len(Tj)可以提取出來一步算出來,剩下主要就是求
      lcp(Ti,Tj)的和,在後綴數組中求兩個後綴的最長前綴長度,就是求各自對應h[i]數組間的最小值。由於這裏i和j把所有的一對Ti和Tj組合都取遍,所以這裏可以轉換成求所有h[i]和h[j]數組中間的最小值的和的兩倍

    • 那麼問題轉換成求所有h[i]和h[j]數組中間的最小值的和,,如何快速的求出所有和呢,因爲枚舉會T。這裏用到nlogn求最長公共子序列的思想。每一次我只求所有h[j]和h[i]之間的最小值的和(其中j

思考

  1. 這題想到就不難了,當然實現的時候還是要想半天的

  2. 求最長公共子序列這種nlogn的思想很實用。

發佈了65 篇原創文章 · 獲贊 14 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章