題目**:
題意是:給定乙個序列,最小規則是相鄰兩個值的合併,開銷是他們的和,將整個序列合併成乙個值的情況下,求解該值的最小值和最大值。
**如下:
1 #include2using
namespace
std;
3 typedef unsigned int
ui;4 typedef long
long
ll;5 typedef unsigned long
long
ull;
6#define pf printf
7#define mem(a,b) memset(a,b,sizeof(a))
8#define prime1 1e9+7
9#define prime2 1e9+9
10#define scand(x) scanf("%llf",&x)
11#define f(i,a,b) for(int i=a;i<=b;i++)
12#define scan(a) scanf("%d",&a)
13#define dbg(args) cout<<#args<<":"<14
#define pb(i) push_back(i)
15#define ppb(x) pop_back(x)
16#define inf 0x3f3f3f3f
17#define maxn 1005
18int n,m,t,max_ans,min_ans=inf,a[maxn],dp1[maxn][maxn],dp2[maxn][maxn],b[maxn];
19int dfs1(int l,int r)//
max20
30return dp1[l][r]=res;31}
32int dfs2(int l,int r)//
min33
42return dp2[l][r]=res;43}
44int
main()45
59 f(i,1,2*n)
6063 f(i,1
,n)64
68 pf("
%d\n%d
",min_ans,max_ans);
69 }
hdu4283區間dp 記憶化搜尋 區間分化
題意 給你一些人的屌絲值di,計算總屌絲值 sum k 1 di k為第i個人進入的位置。給你乙個棧,可以使人的位置改變。方法一 記憶化搜尋 dp i j k 表示區間 i,j 第i個人放在k位置的屌絲值。搜尋所有的狀態,記錄已經搜尋的狀態。記憶化搜尋 這裡也可以用二維的陣列,另外用乙個sum陣列和...
ZJU1602 區間DP記憶化搜尋解法
中文大意 乘法遊戲是在一行牌上進行的。每一張牌包括了乙個正整數。在每乙個移動中,玩家拿出一張牌,得分是用它的數字乘以它左邊和右邊的數,所以不允許拿第1張和最後1張牌。最後一次移動後,這裡只剩下兩張牌。目標是使得分的和最小。例如,如果數是10 1 50 20 5,依次拿1 20 50,總分是10 1 ...
洛谷p1603 區間dp
區間dp 在區間上進行動態規劃,求解一段區間上的最優解。主要是通過合併小區間的 最優解進而得出整個大區間上最優解的dp演算法。核心思路 思路 求解在乙個區間上的最優解,那麼把這個區間分割成乙個個小區間,求解每個小區間的最優解,再合併小區間得到大區間即可。所以可以列舉區間長度len 為每次分割成的小區...