錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務,錦州廣廈維修電腦,公司IT外包服務
topFlag1 設為首頁
topFlag3 收藏本站
 
maojin003 首 頁 公司介紹 服務項目 服務報價 維修流程 IT外包服務 服務器維護 技術文章 常見故障
錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務技術文章
石子合并(動態規劃 區間DP)+詳細注釋

作者: 佚名  日期:2023-07-15 21:01:11   來源: 本站整理

題目

設有 N 堆石子排成一排,其編號為 1,2,3,…,N。

每堆石子有一定的質量,可以用一個整數來描述,現在要將這 N 堆石子合并成為一堆。

每次只能合并相鄰的兩堆,合并的代價為這兩堆石子的質量之和,合并后與這兩堆石子相鄰的石子將和新堆相鄰,合并時由于選擇的順序不同,合并的總代價也不相同。

例如有 4 堆石子分別為 1 3 5 2, 我們可以先合并 1、2堆,代價為 4,得到 4 5 2, 又合并 1、2堆,代價為 9,得到 9 2 ,再合并得到 11,總代價為 4+9+11=24;

如果第二步是先合并 2、3 堆,則代價為 7,得到 4 7,最后一次合并代價為 11,總代價為 4+7+11=22。

問題是:找出一種合理的方法,使總的代價最小,輸出最小代價。

輸入格式

第一行一個數 N 表示石子的堆數 N。

第二行 N 個數,表示每堆石子的質量(均不超過 1000)。

輸出格式

輸出一個整數,表示最小代價。

數據范圍

1≤N≤300

輸入樣例:

4 1 3 5 2 

輸出樣例:

22

 

解題思路:

按區間從短到長依次枚舉,求區間中石子合并的最小代價并記錄在f數組中 

例如  

區間長度len=2時得到

f[1][2] = 4,f[2][3] = 8,f[3][4] = 7


在區間長度len=3時根據f[l][r]=min(f[l][r],f[l][k]+f[k+1][r]+s[r]-s[l-1]);就可以得到

f[1][3]=f[1][2]+f[3][3]+(s[3]-s[0])=13

ps:區間長度遞增的原因是區間長度長的利用到了區間長度小的數值

 

程序代碼

#include<bits/stdc++.h> const int N=1010; int f[N][N];//表示區間  int s[N];   //求前綴和  int a; using namespace std; int main() {  cin>>a;  for(int i=1;i<=a;i++)cin>>s[i];     for(int i=1;i<=a;i++)s[i]+=s[i-1];//求前綴和,使得下標之差就是區間的元素之和     for(int len=2;len<=a;len++)//len代表區間的長度,區間的長度遞增   {   for(int i=1;i+len-1<=a;i++)//例如,i=1,len=2時 i+len-1=2,1到2即表示區間長度為2   {    int l=i,r=i+len-1;    f[l][r]=0x3f3f3f3f;        for(int k=l;k<r;k++)//k用來切割區間     {     f[l][r]=min(f[l][r],f[l][k]+f[k+1][r]+s[r]-s[l-1]);     //區間從左到右依次分割求理想的最小值     }    //s[r]-s[l-1]為最后一下合并區間內的石子需要的體力為區間內所有石子的和    }  }  cout<<f[1][a];//輸出1到a區間的最小和,就是答案  }


熱門文章
  • 蘋果按鍵強制恢復出廠步驟,蘋果手機...
  • Centos怎么關閉防火墻?Centos7關閉...
  • 石子合并(動態規劃 區間DP)+詳細...
  • windows server 2012 r2 VPN 服務器...
  • js替換字符串中的空格,換行符
  • 記錄一臺iMac A1419維修信息供參考...
  • 詳解CAS算法
  • 蘋果電腦黑屏是什么原因造成的
  • MAC電腦忘記開機密碼怎么辦,怎么解...
  • mac怎么卸載軟件
  • AHCI和RAID有什么區別?AHCI和RAID...
  • 在BIOS中把硬盤模式RAID改成AHCI模...
  • 錦州廣廈電腦上門維修

    報修電話:13840665804  QQ:174984393 (聯系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號:遼ICP備2023002984號-1
    上門服務區域: 遼寧錦州市區
    主要業務: 修電腦,電腦修理,電腦維護,上門維修電腦,黑屏藍屏死機故障排除,無線上網設置,IT服務外包,局域網組建,ADSL共享上網,路由器設置,數據恢復,密碼破解,光盤刻錄制作等服務

    技術支持:微軟等
    主站蜘蛛池模板: 久久亚洲AV成人无码国产| 精品无码黑人又粗又大又长| 成在人线av无码免费高潮水| 日韩精品无码一区二区视频| 免费无码VA一区二区三区 | 无码aⅴ精品一区二区三区浪潮| 国产精品亚韩精品无码a在线| 精品人妻系列无码一区二区三区| 久久亚洲AV成人无码国产电影| 中文字幕在线无码一区| 无码精品A∨在线观看免费| 国产精品99无码一区二区| 亚洲AV无码精品国产成人| 亚洲韩国精品无码一区二区三区| 亚洲午夜无码久久久久小说 | 综合无码一区二区三区| 亚洲爆乳少妇无码激情| 亚洲色无码一区二区三区| 国产午夜无码视频免费网站| 麻豆亚洲AV永久无码精品久久| 无码av不卡一区二区三区| 亚洲日韩一区二区一无码| 八戒理论片午影院无码爱恋| 激情无码亚洲一区二区三区| 国产精品久久久久无码av| 亚洲精品无码成人片久久| 日韩久久无码免费毛片软件 | 国产午夜无码片在线观看| 无码精品国产dvd在线观看9久| 国产激情无码视频在线播放性色| 无码国产亚洲日韩国精品视频一区二区三区 | 日韩放荡少妇无码视频| 99无码精品二区在线视频| 国产午夜无码精品免费看 | 亚洲中文字幕无码爆乳AV| 八戒理论片午影院无码爱恋| 国内精品人妻无码久久久影院导航| 无码国模国产在线观看| 免费人妻av无码专区| 久久精品无码一区二区三区不卡| 亚洲精品无码久久久久秋霞|