FZU 1409 檔案壓縮

2021-05-01 16:59:50 字數 1404 閱讀 8382

檔案壓縮

time limit:1s

memory limit:32m

accepted submit:302

total submit:1026

提高檔案的壓縮率一直是人們追求的目標。近幾年有人提出了這樣一種演算法,它雖然只是單純地對檔案進行重排,本身並不壓縮檔案,但是對經這種演算法調整後的檔案進行壓縮,在大多數情況下都能獲得比原來更大的壓縮率。

該演算法具體如下:對乙個長度為n的字串s,首先根據它構造n個字串,其中第i個字串由s向左迴圈移位i-1次得到(見示例)。然後把這n個字串按照首字元從小到大排序。如果兩個字串的首字元相同,則它們的相對位置不變。接著把排序後的字串的尾字元依次連成乙個新的字串s'。它的長度仍為n,而且顯然是s中的字元的一種重排。最後輸出s'以及s的首字元在s'中的序號p。例如:

s = example

1、構造n個字串:

example

xamplee

ampleex

mpleexa

pleexam

leexamp

eexampl

2、將字串排序:

ampleex

example

eexampl

leexamp

mpleexa

pleexam

xamplee

3、輸出:

s' = xelpame

p = 7

由於英語單詞構造的特殊性,某些字母出現的頻率很高,因此在 中相同的字母有很大機率排在一起,從而提高 的壓縮率。雖然這種演算法利用了英語單詞的特性,然而在實踐中,人們發現它幾乎適用於所有型別的檔案壓縮。

請你編寫乙個程式模擬該演算法的執行過程,輸入字串s,輸出s'和p。輸入輸出格式

輸入包含兩行。第一行為一整數n,1<=n<=10000,表示s的長度;第二行為字串s,字串全部由小寫字母組成,沒有其它字元。

輸出兩行,第一行為s',第二行為整數p。輸入樣例

7

example

輸出樣例

xelpame

7

original: fzupc 2006

解題:一種方法可以使用multimap自動排序,還可以儲存相同關鍵字的值。要尋找第乙個元素可以令第乙個元素不同任何乙個元素,這裡將它ascii碼加上乙個數字,最後在看下它在**即可。

另一種方法,可以用結構體來做。結構體裡面可以儲存三個變數(或許可以更少),首尾字元,還有尾字元本來的下標(這裡都是指排序後的)。題目要求相同首字元不改變相對位置,這裡不能使用sort函式,但是可以使用stable_sort()函式來排序,對於stl的各種不同排序,可以看這裡。

Foj 1409 檔案壓縮

提高檔案的壓縮率一直是人們追求的目標。近幾年有人提出了這樣一種演算法,它雖然只是單純地對檔案進行重排,本身並不壓縮檔案,但是對經這種演算法調整後的檔案進行壓縮,在大多數情況下都能獲得比原來更大的壓縮率。該演算法具體如下 對乙個長度為n的字串s,首先根據它構造n個字串,其中第i個字串由s向左迴圈移位i...

5 檔案許可權 檔案壓縮打包

命令 解釋ls lh 顯示許可權 chmod ugo rwx dir1 新增所有者 群組 其他人在dir1的讀 寫 執行許可權 chmod go rex dir1 刪除群組 其他人對dir1讀 寫 執行許可權 chown user1 file1 更改file1的所有者為user1 chown r u...

LG P1124 檔案壓縮

p1124 檔案壓縮 題目背景 提高檔案的壓縮率一直是人們追求的目標。近幾年有人提出了這樣一種演算法,它雖然只是單純地對檔案進行重排,本身並不壓縮檔案,但是經這種演算法調整後的檔案在大多數情況下都能獲得比原來更大的壓縮率。題目描述 該演算法具體如下 對乙個長度為n的字串s,首先根據它構造n個字串,其...