DP練習1題解B

2021-09-02 20:37:34 字數 774 閱讀 7846

先上題目描述 poj2181

樣例輸入87

2184

356樣例輸出

因為有兩個方向 如果只開乙個陣列dp[i],難以儲存前一步是上還是下

而考慮到只要奶牛不是傻子(其實是人不是傻子) 最後一步一定是上

那麼容易想到是不是可以用dp[i]儲存到當前最大的跳躍能量(最後一步為上)

那麼需要考慮就是下的那步 從dp[j]轉移到dp[i],下的一步應該是i到j的最小值

那就要開乙個陣列預處理 但看到150000我們知道只有o(n)才能救中國 肯定不行

因為之前的思路問題在無法處理下的那步狀態 那麼換個角度可以想到開兩個陣列

乙個儲存當前步為下的最優子狀態,乙個儲存當前步為上的最優子狀態。

我把它們命名為u[ ] d[ ]

得到狀態轉移方程:

u[i]=max(d[i-1]+a[i],u[i-1])

d[i]=max(u[i-1]+a[i],d[i-1])

眾所周知 狀態轉移方程出來 題目就做完了 因此

**如下:

#include#includeint u[150001];

int d[150001];

int a[150001];

using namespace std;

int main()

cout以上

牛客練習賽1 B 樹題解

演算法分析 解題 shy有一顆樹,樹有n個結點。有k種不同顏色的染料給樹染色。乙個染色方案是合法的,當且僅當對於所有相同顏色的點對 x,y x到y的路徑上的所有點的顏色都要與x和y相同。請統計方案數。第一行兩個整數n,k代表點數和顏色數 接下來 n 1 行,每行兩個整數 x,y 表示 x 與y之間存...

數論練習1題解A

先貼題 此題有兩個思路 法1 運用費馬定理和同餘 則結果同餘與2 k,k為對n求1e9 6的模 此處可一位位讀求 也可 高精度 備註 以上均要使用快速冪 如下 include includeusing namespace std char ch 100002 long long power int,...

DP練習1 花店櫥窗布置

某花店現有f束花,每一束花的品種都不一樣,同時至少有同樣數量的花瓶,被按順序擺成一行,花瓶的位置是固定的,從左到右按1到v順序編號,v是花瓶的數目。花束可以移動,並且每束花用1到f的整數標識。如果i j,則花束i必須放在花束j左邊的花瓶中。例如,假設杜鵑花的標識數為1,秋海棠的標識數為2,康乃馨的標...