Unverified Commit 415a0d8b authored by GavinZhengOI's avatar GavinZhengOI Committed by GitHub
Browse files

加入真代码

parent 10983b69
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -37,7 +37,16 @@ For i:=1 to n
    当前元素入栈
    top=k
```

```cpp
for(int i=1;i<=n;i++) {
    int  k=cnt;
    while(k>0&&h[stk[k]]>h[i])k--;
    if(k)rs[stk[k]]=i;//rs代表笛卡尔树每个节点的右儿子
    if(k<cnt)ls[i]=stk[k+1];//ls代表笛卡尔树每个节点的左儿子
    stk[++k]=i;
    cnt=k;
}
```
## 笛卡尔树与 Treap

谈到笛卡尔树,很容易让人想到一种家喻户晓的结构——Treap。没错,Treap 是笛卡尔树的一种,只不过 w 的值完全随机。Treap 也有线性的构建算法,如果提前将元素排好序,显然可以使用上述单调栈算法完成构建过程,只不过很少会这么用。