【題目描述】
給定乙個長度為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...