動態規劃dp例題

2021-09-18 03:51:51 字數 1174 閱讀 8301

@動態規劃

菜哭武讀**

天才程式設計師剛剛接了乙個特別厲害的專案,所以他最近正在閱讀**找靈感。菜哭武有乙個習慣就是每天給自己定乙個小目標,不完成這個小目標不睡覺。

讀**期間,他把自己找到的相關的**都編了號從1 號到n號。 所有**必須按照順序讀,從1號開始,到n號結束。每一篇**都有對應的閱讀時間,第i篇**的閱讀時間是ai分鐘。菜哭武每讀完一篇**會獲得1點靈感。通過消耗2點靈感可以加快閱讀,使閱讀時間從ai變成⌈ai/2⌉,即(ai/2)向上取整。或者他可以通過消耗3點靈感跳過一篇**。加快閱讀在讀完之後可以獲得1點靈感,但是跳過**不能。但是菜哭時間非常緊張,他只有t分鐘的時間,想要讀盡量多的**。他想知道按照他的方式閱讀,最多可以讀多少篇**。

天才程式設計師菜哭武自然是會算的,但是他最近時間非常緊張,不想算,所以需要你幫幫忙。

第一行兩個整數n,t(1<=n<=100,1<=t<=1,000,000)表示n篇**,他有t分鐘的時間

接下來一行,有n個整數,第i個數為ai(1<=ai<=1,000)表示第i篇**的閱讀時間

輸出一行,包含乙個整數,表示菜哭武最多可以讀多少篇**。

輸入
6 5

1 1 4 5 1 4

輸出
3

輸入
6 7

1 1 4 5 1 4

輸出
4

#include .h>

using namespace std;

const int maxn =

105;

const int inf =

0x3f3f3f3f

;int dp[maxn]

[maxn]

[maxn]

;//dp[i][j][k]表示在前i篇**中讀了j篇,當前的靈感是k時用的最少時間

int a[maxn]

;int n, t;

int main()

cout << ans << endl;

return0;

}

動態規劃例題

題目描述 有一條很長的數軸,一開始你在0的位置。接下來你要走n步,第i步你可以往右走ai或者bi。問n步之後,0到m的每個位置,能不能走到?輸入格式 第一行,兩個整數n,m。接下來n行,每行兩個整數ai,bi。輸出格式 一行,一共m 1個數,每個數都是0或1表示能否走到,數字之間不用空格隔開。樣例輸...

《動態規劃》 ACM 動態規劃例題詳解

描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 圖1 圖1給出了乙個數字三角形。從三角形的頂部到底部有很多條不同的路徑。對於每條路徑,把路徑上面的數加起來可以得到乙個和,你的任務就是找到最大的和。注意 路徑上的每一步只能從乙個數走到下一層上和它最近的左邊的那個數或者右邊的那個數。輸...

動態規劃及其動態規劃經典例題

動態規劃是最重要 最經典的演算法之一,學好動態規劃對我們十分重要,掌握動態規劃對解決某些問題會起到事半功倍的效果。特點 可以把原始問題劃分為一系列子問題 求解每個子問題僅一次,並將其結果儲存到乙個表中,以後用到時直接訪問,不重複計算,節省時間。自底向上地計算 適用範圍 原問題可以分為多個相關子問題,...