51nod1270 陣列的最大代價(簡單dp

2022-08-09 06:57:12 字數 957 閱讀 5951

---恢復內容開始---

1270 陣列的最大代價

基準時間限制:1 秒 空間限制:131072 kb 分值: 20 難度:3級演算法題

收藏關注陣列a包含n個元素a1, a2......an。陣列b包含n個元素b1, b2......bn。並且陣列a中的每乙個元素ai,都滿足1 <= ai <= bi。陣列a的代價定義如下:

(公式表示所有兩個相鄰元素的差的絕對值之和)

給出陣列b,計算可能的最大代價s。

input

第1行:1個數n,表示陣列的長度(1 <= n <= 50000)。

第2 - n+1行:每行1個數,對應陣列元素bi(1 <= bi <= 10000)。

output

輸出最大代價s。
input示例

5101

10110

output示例

36

看到這道題首先想到的就要|ai-a(i-1)|最大,這a陣列只可能是1或者bi

則分別考慮1或者是bi時候的情況;

就可以得到遞推公式:

dp[i][0]=max(dp[i-1][0],dp[i-1][1]+abs(1-b[i-1]));        //表示a[i]為1的情況

dp[i][1]=max(dp[i-1][0]+abs(b[i]-1]),dp[i-1][1]+abs(b[i]-b[i-1]));//表示a[i]為bi的情況

#include#include#includeusing namespace std;

int b[50005];

int dp[50005][2];

int main(){

int n;

scanf("%d",&n);

int i;

for(i=0;i

---恢復內容結束---

51nod 1270 陣列的最大代價

要麼取峰值要麼取谷值,dp n 0 dp n 1 分別表示第i位取1或最大值時,最大的代價 include include include includeusing namespace std const int maxn 50010 int a maxn dp maxn 2 int main dp...

51nod1270陣列的最大代價

1270 陣列的最大代價 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 陣列a包含n個元素a1,a2.an。陣列b包含n個元素b1,b2.bn。並且陣列a中的每乙個元素ai,都滿足1 ai bi。陣列a的代價定義如下 公式表示所有兩個相鄰元素的差的絕對值之和 給...

陣列的最大代價 51Nod 1270

陣列a包含n個元素a1,a2.an。陣列b包含n個元素b1,b2.bn。並且陣列a中的每乙個元素ai,都滿足1 ai bi。陣列a的代價定義如下 公式表示所有兩個相鄰元素的差的絕對值之和 給出陣列b,計算可能的最大代價s。第1行 1個數n,表示陣列的長度 1 n 50000 第2 n 1行 每行1個...