Swust OJ 138 檔案壓縮

2022-05-13 03:55:20 字數 2209 閱讀 6291

time limit(ms): 1000      memory limit(kb): 65535

description

提高檔案的壓縮率一直是人們追求的目標。近幾年有人提出了這樣一種演算法,它雖然只是單純地對檔案進行重排,本身並不壓縮檔案,但是經這種演算法調整後的檔案在大多數情況下都能獲得比原來更大的壓縮率。 該演算法具體如下:對乙個長度為n的字串s,首先根據它構造n個字串,其中第i個字串由將s的前i-1個字元置於末尾得到。然後把這n個字串按照首字元從小到大排序,如果兩個字串的首字元相等,則按照它們在s中的位置從小到大排序。排序後的字串的尾字元可以組成乙個新的字串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』的壓縮率。雖然這種演算法利用了英語單詞的特性,然而在實踐的過程中,人們發現它幾乎適用於所有的檔案壓縮。

請你編乙個程式,讀入s』和p,輸出字串s。

input

輸入檔案共有三行,第1行是乙個整數n(1<=n<=10000),代表s』的長度,第2行是字串s』,第3行是整數p。

output

僅包含一行s。

sample input

7xelpame

7sample output

example

解題思路:這道題感覺太詭異了(想得整個人都不好了~~),這是乙個逆向求解得過程,就好比密碼破譯,只不過你知道了關鍵的key;

(1)觀察沒有排序的已經構造好的序列前乙個字串的第乙個字元是下乙個字串的最後乙個字元;

(2)由於原始單詞第乙個字元位置已知,而我們通過對轉換好的字元排序,得到了排序過後的字串的首字母;

(3)排序時是首字母相同按出現次序先後排序;

我們通過以上3點從原始字元的最後乙個出發利用(1)的規則結合(2)的特性,找到排列好的字串第乙個字元與當前識別符號(初始是第乙個字元,可以查詢到原始序列最後乙個字元)相等的字串,其最後字元(輸入的字串對應位置的元素)為所求,以此類推,逆序得到完整原始字串,然後倒序輸出;

主要**如下:

for (i = 0; i < len; i++)

if (ss[i] == c)break

; ans[

0] =se[i];

c =se[i];

ss[i] = '#'

;

for (i = len - 1; i >= 0; i--)

}

結合上面三點仔細體會~~~

完整**如下:

1 #include 2 #include 3 #include 4

using

namespace

std;

5int

main()

15strcpy(ss, se);

16 sort(ss, ss +len);

17 c = se[p - 1

];18

for (i = 0; i < len; i++)

19if (ss[i] == c)break

;20 ans[0] =se[i];

21 c =se[i];

22 ss[i] = '#'

;23for (i = len - 1; i >= 0; i--)30}

31for (i = len - 1; i >= 0; i--)

32 cout <

33 cout <

35return0;

36 }

view code

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

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

Foj 1409 檔案壓縮

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

FZU 1409 檔案壓縮

檔案壓縮 time limit 1s memory limit 32m accepted submit 302 total submit 1026 提高檔案的壓縮率一直是人們追求的目標。近幾年有人提出了這樣一種演算法,它雖然只是單純地對檔案進行重排,本身並不壓縮檔案,但是對經這種演算法調整後的檔案進...