提綱:
區間dp一般設計f[i][j]表示區間i到j的dp值,用幾段小的合併成一段整體,也是分治的思想,轉移時列舉中間點k,從f[i][k],f[k+1][j]來合併
1.題目:
題解:石子歸併
水題開頭
**:
#include #include #include using namespace std;
int n,a[105],sum[105],f[105][105];
int main()
zh[80];
bool f[205][205][100];
char st[250];
int main()
題目:刪數
題解:這題目一讀就覺得是區間dp嘛
**:#include #include #include #include using namespace std;
int a[105],f[105][105];
int cost(int i,int j)
int main()
{ int n,i,j,k;
scanf("%d",&n);
for (i=1;i<=n;i++) scanf("%d",&a[i]);
for (i=1;i<=n;i++) f[i][i]=a[i];
//f[i][j]從i合併到j的最大值
for (i=2;i<=n;i++)
for (j=1;j<=n-i+1;j++)
{int r=j+i-1;
f[j][r]=cost(j,r);
for (k=j;k
數字dp小練
我是超連結 題意 找0 n中含有 49 的個數 題解 狀態 f i j 表示i位數以j開頭的數中不含49的個數 轉移 if j 4 k 9 f i j f i 1 k 不含49,最後用總數減去不含的就是含有的 因為資料n 1怕爆longlong,手動 1 include include define...
線性dp 區間dp
1 尼克的任務 額一道挺水的題,愣是做了幾個小時 動態規劃大致的思路還是找乙個轉移 換個詞就是影響 我們可以明顯看出本題的規則 空暇時,一遇到任務必須挑乙個接 求1 n時間內最大空暇時間 所以將任務排序是必要的,兩個關鍵字 再來想象一下當我做到第i 個任務時,我在 st i st i t i 1 時...
線狀DP及區間DP
這裡我們都用到動態規劃的思想 dynamic programming,簡稱dp。本質就是組合子問題來求解原問題,且對每個子問題只求解一次。一般來說四個步驟 1.刻畫乙個最優結構特徵 2.遞迴的定義最優解值 3.計算最優解的值 4.利用計算出的資訊構造乙個最優解 這邊直接給出 include incl...