錦州市廣廈電腦維修|上門維修電腦|上門做系統|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无码免费高潮喷水| 国产精品无码无卡在线播放| 日韩精品专区AV无码| 亚洲午夜无码久久久久| 精品深夜AV无码一区二区老年| 久久久久亚洲AV无码专区桃色| 岛国av无码免费无禁网站| 人妻丰满av无码中文字幕| 亚洲av无码片在线播放| 亚洲日韩乱码中文无码蜜桃臀网站| 久久久久亚洲AV无码网站| 不卡无码人妻一区三区音频| 中文字幕精品无码一区二区| 无码Aⅴ在线观看| 老子午夜精品无码| 亚洲AV无码XXX麻豆艾秋| 无码人妻丰满熟妇啪啪网站牛牛| 亚洲综合无码精品一区二区三区 | 亚洲中文久久精品无码1 | 西西4444www大胆无码| 久久久久亚洲?V成人无码| 无码无套少妇毛多18PXXXX| 久久水蜜桃亚洲av无码精品麻豆 | 精品一区二区三区无码免费视频 | AV无码小缝喷白浆在线观看 | 亚洲人成影院在线无码按摩店 | 国产无码一区二区在线| 无码熟熟妇丰满人妻啪啪软件| 亚洲人成人伊人成综合网无码 | 成人午夜亚洲精品无码网站| 国产精品毛片无码| 国产高清无码二区| 国内精品无码一区二区三区| 狠狠躁狠狠躁东京热无码专区| 变态SM天堂无码专区| 亚洲av永久无码精品古装片| 日韩网红少妇无码视频香港|