2271 問題 H: 藍橋杯2016年第七屆真題-壓縮變換
時間限制: 1s
內存限制: 128MB 提交: 589 解決: 75
題目描述
小明最近在研究壓縮算法。
他知道,壓縮的時候如果能夠使得數值很小,就能通過熵編碼得到較高的壓縮比。
然而,要使數值很小是一個挑戰(zhàn)。
最近,小明需要壓縮一些正整數的序列,這些序列的特點是,后面出現的數字很大可能是剛出現過不久的數字。對于這種特殊的序列,小明準備對序列做一個變換來減小數字的值。
變換的過程如下:
從左到右枚舉序列,每枚舉到一個數字,如果這個數字沒有出現過,剛將數字變換成它的相反數,如果數字出現過,則看它在原序列中最后的一次出現后面(且在當前數前面)出現了幾種數字,用這個種類數替換原來的數字。
比如,序列(a1, a2, a3, a4, a5)=(1, 2, 2, 1, 2)在變換過程為:
a1: 1未出現過,所以a1變?yōu)?1;
a2: 2未出現過,所以a2變?yōu)?2;
a3: 2出現過,最后一次為原序列的a2,在a2后、a3前有0種數字,所以a3變?yōu)?;
a4: 1出現過,最后一次為原序列的a1,在a1后、a4前有1種數字,所以a4變?yōu)?;
a5: 2出現過,最后一次為原序列的a3,在a3后、a5前有1種數字,所以a5變?yōu)?。
現在,給出原序列,請問,按這種變換規(guī)則變換后的序列是什么。
輸入
輸入第一行包含一個整數n,表示序列的長度。
第二行包含n個正整數,表示輸入序列。
對于30%的數據,n<=1000;
對于50%的數據,n<=30000;
對于100%的數據,1 <=n<=100000,1<=ai<=10^9
提示
零基礎同學可以先學習
視頻課程,包含C/C++、Python、百練、藍橋杯輔導、算法數據結構等課程,提供視頻講解以及配套習題,還有老師答疑,
點擊這里了解課程詳情