sam真讓人頭禿。
題面首先考慮 l=1,r=∣s∣的做法
如果對於ion2018的子串不用判重的話,對ion2017建sam跑一遍就好了.
此時ion2018的每乙個字首對答案的貢獻為字首長度-匹配長度。
考慮怎麼去重。
這應該算是sam比較常用去重的一種套路。
對ion2018建出sam。
原本就算答案的方式是列舉子串的右端點的位置。
現在改為列舉列舉sam上的節點。
由於對於每種串要只計算一次。
先計算出每個right集合再ion2018第一次出現的位置tag[i]。(這裡只是選擇多個相同的串中的乙個作為代表元素而已)
再對ion2018這個字串的每乙個位置計算出與ion2017的最大匹配長度lim[i]。
然後可以這麼計算答案:
NOI2018 你的名字
題目描述 小 a 被選為了 ion2018 的出題人,他精心準備了一道質量十分高的題目,且已經把除了題目命名以外的工作都做好了。由於 ion 已經舉辦了很多屆,所以在題目命名上也是有規定的,ion 命題手冊規定 每年由命題委員會規定乙個小寫字母字串,我們稱之為那一年的命名串,要求每道 題的名字必須是...
NOI2018 你的名字
sam寫的太不熟練了 sam上的線段樹合併也不熟練 調了半天樣例 給定乙個s,q次詢問,每次給出t,l,r,求對於s l,r 屬於t的子串卻不屬於s l,r 的子串有多少個 看上去挺簡潔的乙個問題。對於s 1,n 68pts?如果做過 heoi2015 最短不公共子串 就好做多了!可以對a,b分別建...
NOI2018 你的名字
嘟嘟嘟 這題以前寫過棄掉了,後來竟然連自己的68分寫法都看不懂了 這次回首這道題,心想怎麼說也得把這題切了,哪怕抄題解也行。但沒想到別人的題解自己怎麼也看不懂,最終還是自己搞出來了 我真nb 總用時前一天下午到第二天凌晨0 30 第二天半個上午。我們先來回顧 l 1,r n 的情況。大體思路就是求出...