這道題首先想到的huffman樹,但是因為有字典序的限制,因此字母(葉子節點)在編碼樹中也應該是從左到右排好的(字典序最小的在最左邊)。
對huffman樹的策略進行魔改,發現得到的不是正確答案,因此考慮將正確答案的樹畫出來。發現,其實這是個區間dp問題,因為排列順序固定。
將根節點作為分界點,算出左子樹的最小值,算出右子樹的最小值。根節點比左右子樹高一層,因此整棵樹的最小值就是:左子樹最小值+右子樹最小值+字母頻率之和。
#include #include #include #include using namespace std;
const int n = 1010;
int n;
int a[n];
int s[n];
int f[n][n];
int main()}}
printf("%d\n", f[1][n]);
return 0;
}
音訊壓縮編碼
只有當信源產生的訊號具有冗餘時,才能對其進行壓縮。下面介紹幾種音訊冗餘的概念 1 時域冗餘度 幅度的非均勻分布 統計表明,語音中的小幅度樣本比大幅度樣本出現的概率要高。週期之間的相關 在特定的瞬間,某一聲音往往只是有頻帶內少數頻率成分起作用。當聲音中只存在少數幾個頻率時,就會象波一樣,在週期與週期之...
RLE 壓縮編碼
rle全程run length encoding,翻譯為遊程編碼,又譯行程長度編碼,又稱變動長度編碼法 run coding 在控制論中對於二值影象而言是一種編碼方法,對連續的黑 白畫素數 遊程 以不同的碼字進行編碼。遊程編碼是一種簡單的非破壞性資料壓縮法,其好處是加壓縮和解壓縮都非常快。其方法是計...
單詞的壓縮編碼
1 描述820 給定乙個單詞列表,我們將這個列表編碼成乙個索引字串 s 與乙個索引列表 a。例如,如果這個列表是 time me bell 我們就可以將其表示為 s time bell 和 indexes 0,2,5 對於每乙個索引,我們可以通過從字串 s 中索引的位置開始讀取字串,直到 結束,來恢...