江哥的DP題(A)

2022-02-26 13:13:02 字數 724 閱讀 5772

【題目描述】

給定乙個長度為n的序列a(a1、a2、a3、······、an),取k個互不相同的元素,使得:

(1)兩兩元素互不相鄰;

(2)元素之和最大。

【輸入描述】

第一行輸入兩個正整數n、k;

第二行輸入n個整數,表示序列a中的元素。

【輸出描述】

輸出乙個整數,表示最大和。

【樣例輸入】

樣例1:

7 33 5 7 -1 9 10 7

樣例2:

7 33 21 7 -1 9 20 7

【樣例輸出】

樣例1:

23樣例2:

40【資料範圍及提示】

對於30%的資料,k ≤ n ≤ 20;

對於100%的資料,k ≤ n ≤ 1000。

源**:

#include

#include

#define ll long long //

越來越喜歡吸long long。

using

namespace

std;

ll n,k,f[

1001][1001][2]=;

intmain()

}printf(

"%lld

",max(f[n][k][0],f[n][k][1

]));

return0;

}

CODE VS 江哥的DP題a

原題 先來一波江哥的解題報告殺 這種方法十分的高深莫測,所以我們換乙個容易理解的 f i,j 表示前i個選j個,且第i個必選,那麼就是江哥的轉移方程 p.s 但是不會字首和優化!顯然,這樣的方法只能獲得30分,資料十分的坑,那麼優化如下 f i,j,0 表示前i個裡面選j個且第i個不選 f i,j,...

江哥的DP題(F)

題目描述 有乙個n m的棋盤,每個格仔都有乙個權值,規定路徑必須滿足下列條件 1 從左上角出發,於右下角結束 2 不經過重複的格仔 3 每一步都不會向左走 現詢問路徑經過的格仔的權值和最小能夠為多少。輸入描述 第一行輸入兩個整數n m 接下來n行,每行輸入m個整數,表示每個格仔的權值。輸出描述 輸出...

江哥的DP題(C)

題目描述 有兩個數x y,一開始x 1 y 1,給定乙個整數n和乙個陣列p p1 p2 p3 pn 並按以下規則操作 1 x n,選擇乙個正整數k,然後將x變為k x,將y變成y px 2 x n,結束操作,得分為y 現詢問最大得分。輸入描述 第一行輸入乙個正整數n 第二行輸入n個正整數,表示陣列p...