題意:這個樣例很誤導人啊,這個題意呢,就是從起點跳到終點,保持遞增跳而且得分最大。注意,起點和終點是不計分的;
解析:模板改一下就好了,之前求的是序列長度。這裡求和,那麼只要把dp初始化a[ ],依然還是**每個數選還是不選的問題。轉移方程:
if(a[i]>a[j])dp[ i ]=max(dp[ i ],dp[ j ]+a[ i ])
#include#include#include
#include
using
namespace
std;
const
int maxn = 1e6+10
;typedef
long
long
ll;ll a[maxn];
ll dp[maxn];
intmain()
}maxx=max(dp[i],maxx);
}cout
}}
HDU 1087 最大遞增子串行和
super jumping!jumping!jumping!題意 無聊的猿發明了 人贏跳跳棋 規則是要從start end,中途可以間隔著跳過若干個格仔,但是下一步位置的權值必須大於當前格仔的權值。最後,所經過格仔的權值和大的獲勝。分析 不連續的最大遞增子串行和問題。當我以第 i 個格仔作為終點時我...
LIS 求最長遞增子串行
動態規劃,dp 時間複雜度 olog n 2 include include include include include using namespace std int lis int a,int alen,int len if alen i maxlen return maxlen int m...
求最長單調遞增子串行
問題描述 設計乙個時間的演算法,找出由n個數組成的最長單調遞增子串行。演算法描述 演算法實現 includestruct date void ascorder struct date a,int n 輸出最長單調遞增子串行 找到最長單調遞增子串行開始的單元 int max 0 intfore for...