破譯情報 NOIP2016提高組複賽模擬試題

2022-05-13 04:03:44 字數 1496 閱讀 6363

【題目描述】

最近國安人員截獲了乙份 rb 國的秘密情報, 全文都是經過加密的,每個單詞都很長。破譯人員想到先把單詞化簡一下,方法是把每個單詞盡量取短些的字首,但所取的字首不能是其他單詞的字首。這個任務現在就交給你來完成。

解釋:「字串s

1是s2

的字首」意思是把字串s

2的後面去掉某些字元,只保留與s1

相同長度的子串,則s1

就稱為s2

的字首。如:「abc

」是「abcaade

」和「abc

」的字首,但不是「

abadc

」的字首。

資料範圍單詞數 n, 1<=n<=50; 每個單詞長度不超過 50;並且都是由小寫字母構成。保證所給單詞沒有乙個單詞是另乙個單詞的字首。

【輸入檔案 addreviate.in】

第一行乙個整數 n,表示單詞的個數。下面有 n 行,每行乙個單詞。

【輸出檔案 addreviate.out】

共 n 行,每行乙個單詞,是對應上面 n 個單詞化簡後的單詞。

【樣例輸入】

樣例測試點#1:

3abc

efgijh

樣例測試點#2:

3aac

aadaae

【樣例輸出】

樣例測試點#1:ae

i樣例測試點#2:

aacaad

aae思路:這題算是送分題中的高難度題了,對於各位高手來說不是什麼問題,我說這題是為了提一下乙個庫函式,這個庫函式是我們一般不經常用的,廢話不多說,我先從頭講起吧

這題要求我們保留n個字串的字首,使得這些字首和其他字首不相同,縮小儲存空間,看起來很簡單,其實還是有點複雜滴

例如題目中給的樣例:

可以先把第乙個字元按照圖中紅線分段,提取第一行第乙個字元,來和下面的每乙個字串進行對比

,如果這個段並不在下面任何乙個字串中是字首,就可以在後面加上個'\0'表示擷取這一段

之後對每一行都採取這樣的措施,就可以實現保留字首

**如下:

1 #include 2 #include 

3int

main()416

for(i=0;i)

17 29}

30if(j>=n)//

這個空的位置前面一段保證字首不重複,就可以標記為空了

3135

else

//否則還要還原回去,繼續尋找下一位

36 39}

40}41for(i=0;i)

42

45return0;

46 }

NOIP2016提高組總結

這次noip可以用幾個字來形容 浪的飛起,頹的不行。中午從校門出發,在車上睡了半個車程。4 00左右,霧比較大,遠處的小蠻腰若隱若現。你好,廣州。5 00,symbol叫我們去看考場,結果被拒在門外,然後大家都散了。我與其它幾位小夥伴匆匆吃完飯,回到酒店,該看電視看電視,中途開會,提醒我們一些注意事...

NOIP2016 提高組 總結

這是倒數第三次noip了。今年我初三。去年的傷痕還未褪去,我在比賽前意識到,當務之急其實是鞏固基礎而非深究一些難題。於是賽前兩周,我認真讀了白書的前面部分,尤其重點練習了dp。dp作為基礎演算法之一,其靈活性極高,所以可以出得很難,也是各種比賽的寵兒。練好dp是尤為重要的。賽前好幾場模擬賽都做得很爛...

NOIP2016提高組總結

來到了廣州,不錯啊,旁邊的飯店很多,可以好好的腐一下了。一群人走進了乙個小巷,住進了乙個七天酒店,發現房間裡面好小啊。吃完飯後,一直都在腐敗。通知開會的同學並沒有到我們的房間來,結果在結束開會的前幾分鐘我們才過去。早早的睡了 第一天,狀態不錯。早早的到了考場。開啟c 發現除錯不了,嚇了我一大跳。做到...