首页 > 代码库 > Codeforces Round #279 (Div. 2)f
Codeforces Round #279 (Div. 2)f
树形最大上升子序列
这里面的上生子序列logn的地方能当模板使 good
#include<iostream>#include<string.h>#include<stdio.h>#include<algorithm>#include<vector>using namespace std;const int maxa = 6006;vector<int>e[maxa];int d[maxa];int a[maxa];int mx, n;void dfs(int q, int p){ int k = lower_bound(d, d+n, a[q]) - d; mx = max(mx, k); int t = d[k]; d[k] = a[q]; for(int i = 0; i < e[q].size(); i++){ if(e[q][i]!=p) dfs(e[q][i], q); } d[k] = t;}int main(){ cin>>n; for(int i = 1; i <= n; i++)scanf("%d", a+i); for(int i = 1; i < n; i++){int x, y; scanf("%d%d", &x, &y); e[x].push_back(y); e[y].push_back(x); } for(int i =0; i <= n; i++)d[i] = (1<<30); for(int i = 1; i <= n; i++){ dfs(i, 0); }printf("%d\n", mx+1);}
Codeforces Round #279 (Div. 2)f
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。