COGS 2688 魚的感恩

2022-03-27 10:56:13 字數 1240 閱讀 9295

從前有乙個漁夫抓到了一條特別的魚,放走了。

漁夫再次抓到了這條魚,正要再次放走之時,這條魚吐出了一片迷霧,迷霧散去以後,漁夫不見了。

漁夫睜開眼,發現自己到了乙個石碑面前,碑上有一行小寫英文本串s,下面寫著:「汝等既有護生之念,應是善良之人,理當授以嘉獎。但是為了證明你的善良,你需要展現你的智慧型,以確保吾所見之善良,並非出於汝之愚笨。上面的字串,你若於其中找到最長的子串,使得這個子串既出現在字首,又出現在字尾,還出現在字串的中間,也就是既非字首又非字尾的位置,則該石碑會將其所藏之物拱手相送。」

漁夫聽完以後,可謂一臉懵逼,遂將這個問題分享給你,希望你能夠解決。若能解決,漁夫願意拿出10,000,000,000,000 mod 250 元,作為解決這個問題的報酬。

第一行是乙個數字q,表示這個問題有q組不同問題。

接下來q行每行乙個由小寫英文本母組成的字串s,意義見於上文。

輸出共q行,每行乙個字串,表示對於每組問題,所求的字串,如果不存在長度大於0且滿足要求的字串,就改成輸出」---」(不包含引號)

niconiconi

ni

考試時打了個純暴力,竟然騙了70= =

正解1:

kmp亂搞,求一下next陣列,記錄在1~n-1哪些next出現過,在n一直跳next,直到出現過即是答案(話說這是標算吧啊喂)

正解2:

hash亂搞(這才是真正的亂搞吧啊喂),先用p進製搞出整個的hash值,然後從後往前列舉終點,然後用這個字首去匹配

1 #include2 #include3 #include4 #include5

using

namespace

std;

6 typedef unsigned long

longl;7

const

int p=233;8

char s[100005

];9 l xp[100005],h[100005

];10

intlen;

11 vectorpo;

12 inline bool judge(int

pos)

26return

false;27

}28intmain()52}

53if(!tmp)

54 puts("

---"

);55

else60}

61 }

view code

268 缺失數字

排序,不多解釋,估計都能想到。func missingnumber nums int int if nums 0 0for i 1 i len nums i return 1 借用雜湊表 不多說,估計也都能想到 func missingnumber nums int int for v range ...

268 缺失數字

難度 簡單 題目描述 解題思路 最簡單的可以用桶計數或者排序,然後找到沒出現過的數字。但是題目要求線性時間複雜度,所以不能排序,又只使用額外常數空間,也不能用桶計數。因為這個題裡資料範圍是確定的,而且只缺失乙個正整數,所以可以先計算0 n的和,然後依次減去陣列裡的元素,剩下來的就是沒出現過的。考慮到...

268 丟失的數字

給定乙個包含 0,n 中 n 個數的陣列 nums 找出 0,n 這個範圍內沒有出現在陣列中的那個數。高階 你能否實現線性時間複雜度 僅使用額外常數空間的演算法解決此問題?示例 1 輸入 nums 3,0,1 輸出 2 解釋 n 3,因為有 3 個數字,所以所有的數字都在範圍 0,3 內。2 是丟失...