树上 LIS 线段树合并+set
读错题了,然后写了一个树上 LIS,应该是对的吧...... code: #include <bits/stdc++.h> #define N 200005 #define LL long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; struct seg { #define lson t[x].ls #define rson t[x].rs int tot; struct node { int ls,rs,maxx; }t[N*50]; int newnode() { return ++tot; } void update(int &x,int l,int r,int p,int v) { if(!x) x=newnode(); t[x].maxx=max(t[x].maxx,v); if(l==r) return; int mid=(l+r)>>1; if(p<=mid) update(lson,l,mid,p,v); else update(rson,mid+1,r,p,v); } int merge(int x,int y) { if(!x||!y) return x+y; int now=newnode(); t[now].maxx=max(t[x].maxx,t[y].maxx)