持續更新…
1.p1005 矩陣取數
解題思路:
按行區間dp
void
print
(__int128 x)
**部分#include
#include
#include
using
namespace std;
__int128 map[85]
[85],f[85]
[85];
__int128 ans=0;
//按行區間dp
__int128 p[85]
;int n,m;
__int128 dfs
(int l,
int r,__int128 a)
void
print
(__int128 x)
intmain
(int argc,
char
** argv)
}for
(int i=
1;i<=n;i++
)print
(ans)
;return0;
}
2.p1880 石子合併
解題思路:
最初拿到題目的時候,以為是用赫夫曼樹的思想合併石子。但是這個合併的順序是一定的,即只能和左邊或者右邊的石子合併,而不是從一堆石子中找出最小的兩堆石子合併。在解題過程中需注意:
#include
#include
#include
#include
#define mx 233233233
using
namespace std;
int a[
220]
,b[220];
//f[i][j]= max(f[i][j],f[i][k]+f[k][j]+d[i][j])
int f[
220]
[220
],f2[
220]
[220];
intd
(int i,
int j)
intdfs
(int l,
int r)
return f[l]
[r];
}int
dfs2
(int i,
int j)
// printf("%d\n",f2[i][j]);
return f2[i]
[j];
}int
main
(int argc,
char
** argv)
for(
int i=
1;i<=
2*n;i++)}
dfs(1,
2*n)
;dfs2(1
,2*n);
for(
int i=
1;i+n<=
2*n;i++
)printf
("%d\n%d\n"
,ans2,ans)
;return0;
}
3.p1063能量項鍊
解題思路:
與p1880 石子合併有異曲同工之妙(因為都是區間dp問題),注意到合併時並非最開始想的從左到右順序合併,在這裡記f[l
][r]
f[l][r]
f[l][r
]為從l
ll到r
rr合併的總能量,那麼有:
f [l
][r]
=max
(f[l
][r]
,f[l
][k]
+f[k
+1][
r]+a
[l]∗
a[k+
1]∗a
[r+1
])
f[l][r]=max(f[l][r],f[l][k]+f[k+1][r]+a[l]*a[k+1]*a[r+1])
f[l][r
]=ma
x(f[
l][r
],f[
l][k
]+f[
k+1]
[r]+
a[l]
∗a[k
+1]∗
a[r+
1])其中a[l
]a[l]
a[l]
為左端點,a[k
+1
]a[k+1]
a[k+1]
為第一部分的右端點,也是第二部分的左端點,a[r
+1
]a[r+1]
a[r+1]
為第二部分的右端點。然後將環化成長度為2n2n
2n的鏈即可。
#include
#include
using
namespace std;
#define ll long long
ll a[
110+
110]
;ll f2[
220]
[220];
intdfs
(int l,
int r)
return f2[l]
[r];
}int
main
(int argc,
char
** argv)
dfs(1,
2*n-1)
;//只能到2*n-1,為了保證遞推公式裡面的a[r+1]不超過a[2*n]
ll ans=-1
;for
(int i=
1;i<=n;i++
)printf
("%lld"
,ans)
;return0;
}
區間DP總結
做了幾題區間動態規劃的題目,覺得區間動態規劃的題目是有點難的。區間dp大概是這一類的動態規劃,在乙個線性的資料上對區間進行狀態轉移,dp i j 表示i到j的區間。dp i j 可以由子區間的狀態轉移而來,關鍵是dp i j 表示的是什麼,然後去找dp i j 和子區間的關係。要知道,在求dp i ...
區間DP總結(一)
noip2000提高 乘積最大 需要用到高精度,目前還不會。noip2006提高組 能量項鍊 noi1995 石子合併 經典區間dp poj1141 brackets sequence 括號匹配 值得細看的部落格 動態規劃之區間dp專題 1 石子合併題目 區間dp模板。include define ...
區間DP總結(二)
poj 1141 brackets sequence 括號匹配並輸出方案 洛谷2858 奶牛零食 區間長度逐漸縮小 洛谷1622 釋放囚犯 將問題向區間dp轉化的思想 參考部落格 劍鋒oi部落格動態規劃之區間dp專題 區間dp常用模板 初始化dp陣列及len為1的情況 for int len 2 l...