洛谷P2029 跳舞

2022-04-02 01:07:46 字數 1211 閱讀 9327

小明今天得到乙個跳舞毯遊戲程式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 3

1 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 走...