錦州市廣廈電腦維修|上門維修電腦|上門做系統|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共享上網,路由器設置,數據恢復,密碼破解,光盤刻錄制作等服務

    技術支持:微軟等
    主站蜘蛛池模板: 国产成人无码aa精品一区| 宅男在线国产精品无码| 无码粉嫩虎白一线天在线观看| 久久亚洲精品成人av无码网站| 人妻在线无码一区二区三区| 无码人妻一区二区三区免费视频 | 影音先锋无码a∨男人资源站| 国产成人无码aa精品一区| 无码人妻精品中文字幕| 精品久久久无码中文字幕| 国产精品无码一区二区三区毛片| 久久99久久无码毛片一区二区| 久久久久亚洲av无码专区| 中文无码成人免费视频在线观看| 亚洲人成无码网站久久99热国产| 无码中文在线二区免费| 亚洲色av性色在线观无码| 国产在线无码一区二区三区视频| 国产精品无码亚洲精品2021| 无码一区二区三区| 无码国产精品一区二区免费16| 日韩aⅴ人妻无码一区二区| AV无码久久久久不卡网站下载| 亚洲AV无码国产精品麻豆天美| 蜜芽亚洲av无码一区二区三区| 无码免费一区二区三区免费播放| 亚洲无码日韩精品第一页| 免费无码又黄又爽又刺激| 亚洲AV成人无码久久WWW| 精品视频无码一区二区三区| 亚洲中文字幕无码中文字在线| 免费看国产成年无码AV片| 无码中文在线二区免费| 无码八A片人妻少妇久久| 中文字幕无码第1页| 伊人久久精品无码二区麻豆| 亚洲国产91精品无码专区| 潮喷无码正在播放| 国精品无码一区二区三区在线蜜臀 | 国产日韩精品无码区免费专区国产 | 国产精品无码日韩欧|