dp真的難.john的奶牛們計畫要跳到月亮上去。它們請魔法師配製了p(1 <= p <=150,000)種藥水,這些藥水必需安原來的先後次序使用,但中間可以跳過一些藥水不吃。每種藥水有乙個「強度」值 s ( 1 <= s <= 500 ),表示可以增強牛的跳躍能力。然而,藥力的作用卻是交替相反方向起作用,也就是說:當第奇數次吃藥時,牛獲得跳的更高的能力,而第偶數吃藥時,卻降低了跳高能力。在吃藥前,牛的跳高能力當然為 0 。簡單dp一點也不簡單dp
我tm就是個dp短板選手..
靠??今天的簡單dp我居然打對了?
靠??看來我的dp有救了???
然後重點是cys好菜菜菜菜菜菜啊!!!!
每種藥只能吃一次,開始時為第1次吃藥。
請求出牛可能跳到的最高高度--最大跳躍能力。
第一行:乙個整數 p
下面p行:每行乙個整數,表示按先後次序要吃的藥水的「強度」。
只乙個整數,表示最大彈跳能力。
8721843
56
另我們對於當前第i個藥水的決策有:17
最後只需要取選/不選的最大值存入即可(如圖
= copy之前題解,然鵝發現有很多不對勁的地方...
1 #include 2 #include 3 #include 4 #include 5 #include 6牛跳#define ll long long
7using
namespace
std;89
intread()
1819
int ans[150001][3
];20
int que[150001
];21
22int
main()
3940 cout << max(ans[n][1] , ans[n][2
]);41
42return
0;
43 }
簡單線性DP總結
首先 動態規劃適用的條件是該問題有最優子結構 無後效性 通過每個最優子結構狀態的遞推可以推出整體的最優解 對這些基本概念的理解既要理性也要一點點感性 dp問題解決順序是 1 確定狀態 通過最後一步將問題轉化為規模更小的子問題 2 轉移方程 3 初始條件與邊界情況 4 計算順序 其中前兩步是十分重要的...
求解線性dp的序列問題
lis longest increasing subsequence 最長上公升子串行 乙個數的序列bi,當b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列 a1,a2,an 我們可以得到一些上公升的子串行 ai1,ai2,aik 這裡1 i1 i2 ik n。比如,對於序列 1...
求解線性dp的序列問題
lis longest increasing subsequence 最長上公升子串行 乙個數的序列bi,當b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列 a1,a2,an 我們可以得到一些上公升的子串行 ai1,ai2,aik 這裡1 i1 i2 ik n。比如,對於序列 1...