小明今天得到乙個跳舞毯遊戲程式dance。遊戲每次連續出n個移動的「箭頭」,箭頭依次標號為1到n,並且的相應的分數s[1..n]。如果你能「踏中」第i號箭頭,你將獲得相應的分數s[i];否則將被扣除相應的分數。
另外,遊戲還有乙個累計獎勵機制:如果踏準次數累計達到t,並且是在踏中第i個箭頭達到的,則將得到b[i]的獎勵分數,累計也將清零,重新開始。
例如:n=6,t=3,相應的s和b分別為、,如果小明踏中所有箭頭,則得分為:(1+2+3+4)+(4+5+6+10)=35
小明是個dance高手,可以踏中他想踏中的任意乙個箭頭。但他發現,根據給定的n,t,s,b,踏中所有的箭頭不一定能得最高分,小明很想知道最高能得多少分,你能幫助小明計算一下最多可得多少分嗎?
輸入格式:
第一行兩個整數n和t。
第二行n個整數,為s的相應分數。
第三行也有n個整數,為b的相應分數。
輸出格式:
乙個整數,可得到的最高分數。
輸入樣例#1:
6 31 2 3 4 5 6
1 1 1 20 1 1
輸出樣例#1:
39
【樣例解釋】
跳過第乙個,扣1分,連踩3個,得9分,並獲得附加分20分,之後再連踩2個,共39分。
【資料範圍】
對於20%的資料0≤n,t≤100;
對於100%的資料0≤n,t≤5000;
s和b各有n個數,所有分數為[0,10000]之間的整數。
/*f[i][j]表示跳到第i個箭頭,已經連跳j次的最大成績
f[i][j]=max(f[i-1][j]-s[i],f[i-1][j-1]+s[i]);(j%t!=0);
f[i][j]=max(f[i-1][j]-s[i],f[i-1][j-1]+s[i]+b[i]);(j%t==0)
*/#include
#include
#define maxn 5010
using
namespace
std;
intn,f[maxn][maxn],s[maxn],t[maxn],tt;
intmain()
int ans=0
;
for(int i=1;i<=n;i++)ans=max(ans,f[n][i]);
cout
<}
洛谷 P2029 跳舞
洛谷 p2029 跳舞 小明今天得到乙個跳舞毯遊戲程式dance。遊戲每次連續出n個移動的 箭頭 箭頭依次標號為1到n,並且的相應的分數s 1.n 如果你能 踏中 第i號箭頭,你將獲得相應的分數s i 否則將被扣除相應的分數。另外,遊戲還有乙個累計獎勵機制 如果踏準次數累計達到t,並且是在踏中第i個...
洛谷P2029跳舞
題目 dp,用的 dp i j 表示 i 之前的數選了 j 個得到的最大結果,然後狀態轉移方程應該是 if j t 0 dp i j max dp i j max dp i 1 j s i dp i 1 j 1 s i b i else dp i j max dp i j max dp i 1 j ...
洛谷P5049 洛谷P5022 題解 旅行
原題 資料加強版 加強版 參考你谷題解 終於調過了 又是一如既往的申必錯誤 noi plus石錘了 原題的資料允許我們 o n 2 暴力斷邊,但是加強版的資料達到了 n log n 級別,我們必須在斷邊這一環節尋求更好的解法。考慮我們進入環後在何處回溯 根據繼續走環走到的點分類 設當前已經從 b 走...