亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ccf試題 壓縮代碼

2019-11-11 04:40:45
字體:
來源:轉載
供稿:網友

題外話: 這道題是典型的石子合并問題。 所謂石子問題,就是有N堆石子,現要將石子有序的合并成一堆,規定如下:每次只能移動2堆石子合并,合并花費為新合成的一堆石子的數量。求將這N堆石子合并成一堆的總花費最?。ɑ蜃畲螅?這類問題有三種情況:

每次移動任意兩堆石子(赫夫曼問題)

每次取最小的兩堆石子相加,直到合并為一堆

#include <iostream>#include<stdio.h>#include<queue>#include<algorithm>using namespace std;int a[102];int main(){ int n; while(scanf("%d",&n)!=EOF) { for(int i=0;i<n;i++) { scanf("%d",&a[i]); } int sum=0; for(int i=0;i<n-1;i++) { sort(a,a+n);//每一次都要重新排序 a[i+1]+=a[i]; sum+=a[i+1]; } 每次移動的相鄰兩堆石子(石子堆排列成直線)

設dp[i][j]表示第i到第j堆石子合并的最優值,sum[i][j]表示第i到第j堆石子的總數量。那么就有狀態轉移公式: 這里寫圖片描述

#include <iostream>using namespace std;int sum[1010];int num[1010];int dp[1010][1010];const int INF=1 << 30;int getMin(int a[],int n){ for(int i=0;i<n;i++) { dp[i][i]=0; } for(int v=1;v<n;v++) { for(int i=0;i<n-v;i++) { int j=i+v; dp[i][j]=INF; int tmp=sum[j]-(i > 0 ? sum[i-1]:0); for(int k=i;k<j;k++) { dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+tmp); } } } return dp[0][n-1];}int main(){ int n; cin>>n; for(int i=0;i<n;i++) { cin>>num[i]; } sum[0]=num[0]; for(int i=1;i<n;i++) { sum[i]=sum[i-1]+num[i]; } cout<<getMin(num,n)<<endl; return 0;}

每次移動的相鄰兩堆石子(石子堆排列成環形)

這里寫圖片描述

#include <iostream> #include <string.h> #include <stdio.h> using namespace std; const int INF = 1 << 30; const int N = 205; int mins[N][N]; int maxs[N][N]; int sum[N],a[N]; int minval,maxval; int n; int getsum(int i,int j) { if(i+j >= n) return getsum(i,n-i-1) + getsum(0,(i+j)%n); else return sum[i+j] - (i>0 ? sum[i-1]:0); } void Work(int a[],int n) { for(int i=0;i<n;i++) mins[i][0] = maxs[i][0] = 0; for(int j=1;j<n;j++) { for(int i=0;i<n;i++) { mins[i][j] = INF; maxs[i][j] = 0; for(int k=0;k<j;k++) { mins[i][j] = min(mins[i][j],mins[i][k] + mins[(i+k+1)%n][j-k-1] + getsum(i,j)); maxs[i][j] = max(maxs[i][j],maxs[i][k] + maxs[(i+k+1)%n][j-k-1] + getsum(i,j)); } } } minval = mins[0][n-1]; maxval = maxs[0][n-1]; for(int i=0;i<n;i++) { minval = min(minval,mins[i][n-1]); maxval = max(maxval,maxs[i][n-1]); } } int main() { while(scanf("%d",&n)!=EOF) { for(int i=0;i<n;i++) scanf("%d",&a[i]); sum[0] = a[0]; for(int i=1;i<n;i++) sum[i] = sum[i-1] + a[i]; Work(a,n); printf("%d %d/n",minval,maxval); } return 0; }

好,下面看這道題:

問題描述   給定一段文字,已知單詞a1, a2, …, an出現的頻率分別t1, t2, …, tn??梢杂?1串給這些單詞編碼,即將每個單詞與一個01串對應,使得任何一個單詞的編碼(對應的01串)不是另一個單詞編碼的前綴,這種編碼稱為前綴碼。   使用前綴碼編碼一段文字是指將這段文字中的每個單詞依次對應到其編碼。一段文字經過前綴編碼后的長度為:   L=a1的編碼長度×t1+a2的編碼長度×t2+…+ an的編碼長度×tn。   定義一個前綴編碼為字典序編碼,指對于1 ≤ i < n,ai的編碼(對應的01串)的字典序在ai+1編碼之前,即a1, a2, …, an的編碼是按字典序升序排列的。   例如,文字E A E C D E B C C E C B D B E中, 5個單詞A、B、C、D、E出現的頻率分別為1, 3, 4, 2, 5,則一種可行的編碼方案是A:000, B:001, C:01, D:10, E:11,對應的編碼后的01串為1100011011011001010111010011000111,對應的長度L為3×1+3×3+2×4+2×2+2×5=34。   在這個例子中,如果使用哈夫曼(Huffman)編碼,對應的編碼方案是A:000, B:01, C:10, D:001, E:11,雖然最終文字編碼后的總長度只有33,但是這個編碼不滿足字典序編碼的性質,比如C的編碼的字典序不在D的編碼之前。   在這個例子中,有些人可能會想的另一個字典序編碼是A:000, B:001, C:010, D:011, E:1,編碼后的文字長度為35。   請找出一個字典序編碼,使得文字經過編碼后的長度L最小。在輸出時,你只需要輸出最小的長度L,而不需要輸出具體的方案。在上面的例子中,最小的長度L為34。 輸入格式   輸入的第一行包含一個整數n,表示單詞的數量。   第二行包含n個整數,用空格分隔,分別表示a1, a2, …, an出現的頻率,即t1, t2, …, tn。請注意a1, a2, …, an具體是什么單詞并不影響本題的解,所以沒有輸入a1, a2, …, an。 輸出格式   輸出一個整數,表示文字經過編碼后的長度L的最小值。 樣例輸入 5 1 3 4 2 5 樣例輸出 34 樣例說明   這個樣例就是問題描述中的例子。如果你得到了35,說明你算得有問題,請自行檢查自己的算法而不要懷疑是樣例輸出寫錯了。 評測用例規模與約定   對于30%的評測用例,1 ≤ n ≤ 10,1 ≤ ti ≤ 20;    對于60%的評測用例,1 ≤ n ≤ 100,1 ≤ ti ≤100;  

屬于石子合并的第二種情況。 對應的100分代碼:

#include <iostream>using namespace std;int sum[1010];int num[1010];int dp[1010][1010];const int INF=1 << 30;int getMin(int a[],int n){ for(int i=0;i<n;i++) { dp[i][i]=0; } for(int v=1;v<n;v++) { for(int i=0;i<n-v;i++) { int j=i+v; dp[i][j]=INF; int tmp=sum[j]-(i > 0 ? sum[i-1]:0); for(int k=i;k<j;k++) { dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+tmp); } } } return dp[0][n-1];}int main(){ int n; cin>>n; for(int i=0;i<n;i++) { cin>>num[i]; } sum[0]=num[0]; for(int i=1;i<n;i++) { sum[i]=sum[i-1]+num[i]; } cout<<getMin(num,n)<<endl; return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲片av在线| 亚洲永久免费观看| 久久亚洲影音av资源网| 久久久极品av| 91综合免费在线| 日日骚av一区| 久久久久久网址| 久久综合88中文色鬼| 精品无人区太爽高潮在线播放| 国产精品直播网红| 91精品久久久久| 亚洲欧洲在线看| 亚洲人成网站色ww在线| 国产精品免费久久久久久| 精品一区精品二区| 亚洲免费av电影| 成人在线免费观看视视频| 成人激情春色网| 激情久久av一区av二区av三区| 国产视频欧美视频| 久久精品美女视频网站| 国产成人免费91av在线| 97国产真实伦对白精彩视频8| 日韩精品在线观看视频| 亚洲欧美日韩中文在线| 国产精品手机播放| 主播福利视频一区| 日韩精品久久久久久久玫瑰园| 日韩在线观看视频免费| 日韩av第一页| 成人激情电影一区二区| 久久久女人电视剧免费播放下载| 国产97在线亚洲| 亚洲桃花岛网站| 国产日韩在线一区| 欧美成人精品在线观看| 国内精品久久久久| 国产精品激情av在线播放| 国产精品91久久久久久| 欧美激情免费在线| 欧美激情欧美狂野欧美精品| 亚洲偷熟乱区亚洲香蕉av| 国产日韩综合一区二区性色av| 亚洲欧美精品中文字幕在线| 国产99久久久欧美黑人| 欧美视频第一页| 国产精品wwwwww| 日韩精品极品在线观看播放免费视频| 国内自拍欧美激情| 亚洲一区二区久久久久久| 国内免费精品永久在线视频| 精品久久国产精品| 日韩欧美极品在线观看| 韩日欧美一区二区| 91久久国产综合久久91精品网站| www.亚洲成人| 91欧美精品午夜性色福利在线| 久久久久久伊人| 欧美精品做受xxx性少妇| 福利一区视频在线观看| 欧美大成色www永久网站婷| 国产一区二区三区四区福利| 久久偷看各类女兵18女厕嘘嘘| 精品国模在线视频| 日韩美女在线播放| 国产日韩欧美一二三区| 欧美日韩人人澡狠狠躁视频| 国产69精品久久久久9999| 国产欧美精品一区二区| 久久中文久久字幕| 成人国产亚洲精品a区天堂华泰| 中文字幕亚洲无线码在线一区| 最好看的2019年中文视频| 久久全国免费视频| 亚洲福利在线视频| 91精品国产91久久久久久不卡| 久久久久这里只有精品| 午夜剧场成人观在线视频免费观看| 国产成人高潮免费观看精品| 日韩欧美中文在线| 日韩二区三区在线| 国产成人激情小视频| 国产精品1234| 97香蕉久久夜色精品国产| 亚洲美女在线观看| 亚洲第一精品久久忘忧草社区| 亚洲精品之草原avav久久| 国产精品成人一区二区三区吃奶| 成人免费福利在线| 亚洲人线精品午夜| 国产亚洲一区二区在线| 亚洲欧美国产精品久久久久久久| 91中文在线视频| 久久影院免费观看| 久久久久久久久久久久久久久久久久av| 欧美电影院免费观看| 欧美性猛交丰臀xxxxx网站| 欧美性一区二区三区| 久久人人爽人人爽人人片av高请| 91精品国产高清久久久久久久久| 欧美韩国理论所午夜片917电影| 日韩电影中文字幕av| 亚洲视频axxx| 精品一区二区三区四区在线| 久久久久久久97| 国产日韩在线看| 亚洲韩国日本中文字幕| 国产在线不卡精品| 日韩精品免费在线视频观看| 国产精品美女av| 国产性猛交xxxx免费看久久| 日韩在线观看电影| 精品国产网站地址| 日韩av成人在线观看| 日韩欧美综合在线视频| 91久久久久久久久久久| 久久亚洲精品中文字幕冲田杏梨| 成人性生交大片免费看视频直播| 国内精品久久影院| 亚洲精品国产欧美| 亚洲一区二区三区四区在线播放| 亚洲人成欧美中文字幕| 亚洲自拍偷拍在线| 国产激情久久久| 亚洲的天堂在线中文字幕| 欧美激情亚洲一区| 欧美成人一二三| 国产精品久久国产精品99gif| 日本一本a高清免费不卡| 国产精品极品尤物在线观看| 国产精品99久久久久久人| 精品精品国产国产自在线| 国产精品视频久| 国产欧美日韩中文字幕在线| 国产精品jvid在线观看蜜臀| 国产在线观看精品一区二区三区| 色噜噜亚洲精品中文字幕| www国产精品com| 久久久精品日本| 国产精品无码专区在线观看| 日韩精品中文字幕视频在线| 色婷婷成人综合| 最近2019年中文视频免费在线观看| 亚洲一区二区三区视频| 国产精品吹潮在线观看| 日韩国产欧美精品在线| 日韩美女视频免费看| 欧美激情综合色| 奇米四色中文综合久久| 欧美性理论片在线观看片免费| 国产成人精品日本亚洲| 在线免费观看羞羞视频一区二区| 日韩电影免费在线观看| 国产亚洲精品日韩| 欧美在线一级va免费观看| 国产精品久久久久久久久久99| 亚洲qvod图片区电影| 国产午夜精品视频| 91精品国产91久久久久久| 国产精品白丝av嫩草影院| 日韩av色综合| 91在线观看免费网站| 亚洲三级免费看| 日韩电影中文字幕|