动态规划题。类似UVa103 Stacking Box,都是题目给一种判断嵌套的方法然后求最长序列。提前对数据排序可以节省一些时间开销。
我的解题代码如下:
#include#include #include #include #include using namespace std;#define MAXN 1005int N;int w[MAXN],s[MAXN];int Rank[MAXN],Index[MAXN],NextInSeq[MAXN],LongLen[MAXN];int cmp(const void *a, const void *b){ int ai = *(int *)a, bi = *(int *)b; if(w[ai]!=w[bi]) return w[ai]-w[bi]; return s[bi]-s[ai];};int dp(int n){ if(LongLen[n]) return LongLen[n]; int k = Index[n]; for(int i=k+1; i s[Rank[i]]) if(LongLen[n]