JSOI2019 節日慶典

2022-05-22 17:09:16 字數 564 閱讀 2793

題意

洛谷做法

先來說個暴力

從前往後列舉\(k=(1,2,...,n)\)

我們維護這樣乙個集合\(p_k\),集合內任意兩個元素\(i,j(i,滿足\(\text(s[i:],s[j:])\ge k-j+1\),即有可能在\(\ge k\)的字首中成為答案的集合

考慮從\(p_\)過渡到\(p_k\)

最後,對\(p_k\)中選出最小的即可,比較兩元素\(i,j\),發現需要做的事均為比較某字首與字尾的\(\text\),可以通過\(\text\)

\(o(1)\)計算

這樣總複雜度是\(o(\sum\limits_^n |p_i|)\)的

考慮優化

考慮\(i,比較不出大小,即\(lcp(s_i,s_j)\ge k-j+1\)

若\(k-j+1\ge j-i\),即字首\(k\)形如\(abbc\),\(c\)是\(b\)的字首,\(i\)在第乙個\(b\)開頭,\(j\)在第二個\(b\)開頭

\(s_i=bbca\),\(s_j=bcab\),\(s_=cabb\)。

所以總複雜度為\(o(nlogn)\)的

LOJ 3103 JSOI2019 節日慶典

給定字串 s 對於 s 的每個字首 t 求 t 所有迴圈同構串的字典序最小的串,輸出其起始下標。如有多個輸出最靠前的 s le 3 times 10 6 本文參考了官方題解。假設我們現在考慮字首 s 1 dots k 我們考慮哪些起始位置可能成為答案,我們稱作候選點。也就是對於這些候選點來說,對於 ...

CCF考試 201503 3節日

問題描述 輸入格式 輸入包含恰好一行,有五個整數a,b,c,y1,y2。其中c 1,2,6,7分別表示星期 一 二 六 日。輸出格式 對於y1和y2之間的每乙個年份,包括y1和y2,按照年份從小到大的順序輸出一行。如果該年的a月第b個星期c確實存在,則以 yyyy mm dd 的格式輸出,即輸出四位...

20201024節日快樂

快不快樂的先不說,看到西湖有 節,忒開心想去遛躂,點進去一看沒有門票,哼,啥也不是。今兒全世界都在為程式設計師慶祝,我也想慶祝一下,哈哈哈.下來說點啥呢?說一下面試吧 補充tips 問為啥沒好好寫,因為懶,所以第二天才完成 謝謝鏈結中的大佬,抱拳!first part 1.多執行緒用過麼?執行緒實現...