P5854 【模板】笛卡尔树
发布日期:2021-05-07 09:42:51 浏览次数:13 分类:技术文章

本文共 688 字,大约阅读时间需要 2 分钟。

题目

思路

类似于treap,每个节点的编号满足二叉搜索树的性质。节点 i 的权值为 p i p_i pi​,每个节点的权值满足小根堆的性质。

code:

#include
#include
#include
#include
#include
using namespace std;int n,a[10000008][4],tot;inline int read(){ int f=0; char c=getchar(); while (c<'0'||c>'9') c=getchar(); while (c>='0'&&c<='9') f=f*10+c-'0',c=getchar(); return f;}int main(){ n=read(); for (int i=1;i<=n;i++) a[i][0]=read(); a[++tot][1]=0; for (int i=1;i<=n;i++) { while (tot&&a[a[tot][1]][0]>a[i][0]) a[i][2]=a[tot--][1]; if (a[tot][1]) a[a[tot][1]][3]=i; a[++tot][1]=i; } long long l=0,r=0; for (int i=1;i<=n;i++) l^=1ll*i*(a[i][2]+1),r^=1ll*i*(a[i][3]+1); cout<
<<' '<
上一篇:Apache Flink online meetup 杭州站
下一篇:【阿里云CIO学院"数字化图谱"第三期】云原生时代的微服务架构

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月15日 02时47分34秒