HUD1069

2018-09-17  本文已影响0人  lvanzn

这道题目的思路和LIS相似,但是要注意排序的问题。

struct node{
    int a,b,c;
}nodes[280];
bool cmp(const node&n1,const node&n2)
{
    if(n1.a==n2.a)
        return n1.b<n2.b;
    else
        return n1.a<n2.a;
}

接下来是状态转移方程,dp[i]=max(dp[i],dp[j]+nodes[i].c);
可以想到第i个的最大长度是建立在其他长度之上的,所以只要求出前面的dp[],再加上nodes[i].c,就是dp[i]的最优解。

从中,我也明白了状态转移问题的一个特点是问题的规模小,问题能够分解为子问题。
划分成为之前的状态加上当前的状态的解。

上一篇下一篇

猜你喜欢

热点阅读