題目描述 description
給定一行n個非負整數a[1]..a[n]。現在你可以選擇其中若干個數,但不能有超過k個連續的數字被選擇。你的任務是使得選出的數字的和最大。
輸入描述 input description
第一行兩個整數n,k
以下n行,每行乙個整數表示a[i]。
輸出描述 output description
輸出乙個值表示答案。
樣例輸入 sample input
5 25
樣例輸出 sample output
資料範圍及提示 data size & hint
對於20%的資料,n <= 10
對於另外20%的資料, k = 1
對於60%的資料,n <= 1000
對於100%的資料,1 <= n <= 100000,1 <= k <= n,
0 <= 數字大小 <= 1,000,000,000
/*view code設f[i]為取前i件物品的最大價值,因為不能連續取k件,所以f[i]的狀態可由j∈[i-k+1,i]轉移來。直接寫暴力的dp會超時,由於i的狀態與i-k及之前的沒有關係了,所以可以用單調佇列優化。
*/#include
#include
#define m 100010
#define ll long long
using
namespace
std;
ll sum[m],f[m],d[m],q[m];
int n,k,head=0,tail=1
;void put(int
j)int
main()
for(int i=1;i<=n;i++)
cout
<
return0;
}
2210 數字組合 codevs
時間限制 1 s 空間限制 32000 kb 題目等級 gold 題目描述 description 在n個數中找出其和為m的若干個數。先讀入正整數n和m,再讀入n個正數 可以有相同的數字,每個數字均在1000以內 在這n個數中找出若干個數,使它們的和是m,把滿足條件的數字組合都找出來以統計組合的個數...
codevs 1085 數字遊戲
codevs 1085 數字遊戲 題目大意 在你面前有一圈整數 一共n個 你要按順序將其分為m個部分,各部分內的數字相加,相加所得的m個結果對10取模後再相乘,最終得到乙個數k。遊戲的要求是使你所得的k最大或者最小。dp i j k 表示i到j分成k個部分的最大值 dp i j k max 注意先將...
Codevs 1229 數字遊戲
時間限制 1 s 空間限制 128000 kb 題目等級 silver lele 最近上課的時候都很無聊,所以他發明了乙個數字遊戲來打發時間。這個遊戲是這樣的,首先,他拿出幾張紙片,分別寫上0到9之間的任意數字 可重複寫某個數字 然後,他叫同學隨便寫兩個數字x和k。lele要做的事情就是重新拼這些紙...