題目
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] - s[i], dp[i - 1][j - 1] + s[i]) );
\]
#include #include #include using namespace std;
int n, t, maxn;
int s[1001010], b[100010];
int sums[1001001], sumb[101001];
int dp[5001][5001];//dp[i][j]表示前i個數已經連續跳了j次的最大得分, j屬於1到t
int main()
for (int i = 1; i <= n; i++)
maxn = max(maxn, dp[n][i]);
printf("%d", maxn);
return 0;
}
洛谷 P2029 跳舞
洛谷 p2029 跳舞 小明今天得到乙個跳舞毯遊戲程式dance。遊戲每次連續出n個移動的 箭頭 箭頭依次標號為1到n,並且的相應的分數s 1.n 如果你能 踏中 第i號箭頭,你將獲得相應的分數s i 否則將被扣除相應的分數。另外,遊戲還有乙個累計獎勵機制 如果踏準次數累計達到t,並且是在踏中第i個...
洛谷P2029 跳舞
小明今天得到乙個跳舞毯遊戲程式dance。遊戲每次連續出n個移動的 箭頭 箭頭依次標號為1到n,並且的相應的分數s 1.n 如果你能 踏中 第i號箭頭,你將獲得相應的分數s i 否則將被扣除相應的分數。另外,遊戲還有乙個累計獎勵機制 如果踏準次數累計達到t,並且是在踏中第i個箭頭達到的,則將得到b ...
洛谷P5049 洛谷P5022 題解 旅行
原題 資料加強版 加強版 參考你谷題解 終於調過了 又是一如既往的申必錯誤 noi plus石錘了 原題的資料允許我們 o n 2 暴力斷邊,但是加強版的資料達到了 n log n 級別,我們必須在斷邊這一環節尋求更好的解法。考慮我們進入環後在何處回溯 根據繼續走環走到的點分類 設當前已經從 b 走...