一个序列中一种链的个数 = 这个序列中最长反链的长度
最长不上升子序列的个数=最长上升子序列的长度
最长上升子序列的个数=最长不上升子序列长度
长度是可以求的
最长不上升子序列长度
g[++ans]=w[1];
for(int i=2;i<=n;i++)
{
if(w[i]<=g[ans])g[++ans]=w[i];
else
{
int x=upper_bound(g+1,g+ans+1,w[i],greater<int>())-g;
g[x]=w[i];
}
}
最长上升子序列的长度
f[++cnt] = w[1];
for (int i = 2; i <=n; i++)
{
if (w[i] > f[cnt]) f[++cnt] = w[i];
else
{
int x=lower_bound(f+1,f+cnt+1,w[i])-f;
f[x]=w[i];
}
}