區間DP 甲蟲(luogu 4870)

2021-09-25 04:20:16 字數 1162 閱讀 2156

在乙個座標軸上有n個露珠,每個露珠有m個水分,露珠會每隔乙個時間單位就消失一點水分,現在有乙隻甲蟲從原點出發,甲蟲的移動速度是乙個單位時間移動乙個單位的距離,甲蟲沒碰到乙個露珠就可以「秒殺」它,問甲蟲最多可以遲到多少水分

本題是本蒟蒻ac的第一道紫題(^▽^)

3 156-3

1

25
0≤n

≤300,1

≤m≤1

,000

,000,−

10,

000≤x1

,x2,

…,xn

≤10

,000

0 \le n \le 300,1 \le m \le 1,000,000,-10,000 \le x_1,x_2,\dots,x_n \le 10,000

0≤n≤30

0,1≤

m≤1,

000,

000,

−10,

000≤

x1​,

x2​,

…,xn

​≤10

,000

對於所有 i≠j

,xi≠

xj

。i \ne j,x_i \ne x_j。

i​=j,

xi​

​=xj

​。我們可以求最小散失水分,以此來算出最大水分

首先設f[i

][j]

[0/1

]f[i][j][0/1]

f[i][j

][0/

1]為吃掉第i

ii到第j

jj個水分的最小散失,然後我們可以得出一下狀態轉移方程:

f[i][j][0]=min(f[i+1][j][0]+(k-len+1)*(a[i+1]-a[i]),f[i+1][j][1]+(k-len+1)*(a[j]-a[i]))\\ f[i][j][1]=min(f[i][j-1][1]+(k-len+1)*(a[j]-a[j-1]),f[i][j-1][0]+(k-len+1)*(a[j]-a[i]))\end\right.

for(

int k=

1;k<=n;

++k)

}printf

("%d"

,ans)

;}

luogu 1043 數字遊戲(區間dp)

題目描述 丁丁最近沉迷於乙個數字遊戲之中。這個遊戲看似簡單,但丁丁在研究了許多天之後卻發覺原來在簡單的規則下想要贏得這個遊戲並不那麼容易。遊戲是這樣的,在你面前有一圈整數 一共n個 你要按順序將其分為m個部分,各部分內的數字相加,相加所得的m個結果對10取模後再相乘,最終得到乙個數k。遊戲的要求是使...

luogu1026 統計單詞個數 區間dp

設f i j 表示1 i分成j分,最多的單詞數 預處理乙個sum i j 陣列,表示i j包含的單詞數 預處理的時候需要注意乙個順序j從大到小列舉,i從j到1列舉 那麼sum i j sum i 1 j 再看看從i開始有沒有新的單詞,有就 dp的時候就是區間dp,dp i j 表示考慮到第i個字母,...

luogu4677山區建小學題解 區間DP

這道題方法跟之前題不一樣,我們相當於列舉乙個左右端點來線性擴充套件,同時劃分斷點進行決策 f i j 表示在前 i 個村莊中建立 j 個小學的最小距離總和 我們將列舉到第 i 個村莊作為階段,修了 j 所小學作為狀態,通過列舉斷點 k 來分割第 j 所小學與前 j 1 所小學 也就是說我們判斷 f ...