分析 去专门学了笛卡尔树,找了一道模板题来做。由于我们建立的笛卡尔树满足小根堆性质,因此 的子树内的结点的高度都大于等于 。而我们又知道 子树内的下标是一段连续的区间。所以 。通过单调栈构建笛卡尔树,时间复杂度为 。 代码 #include<bits/stdc++.h> using namespace std; const int N = 110000; int lc[N],rc[N],st[N],top,n,a[N],si[N]; #define LL long long LL ans; void dfs(int x) { if(lc[x]) dfs(lc[x...