当前位置: 首页 > news >正文

网站建设价目seo厂家费用低

网站建设价目,seo厂家费用低,织梦网站如何打通百度小程序,重庆网站建设培训班笛卡尔树 笛卡尔树定义构建性质 习题P6453 [COCI 2008/2009 #4] PERIODNICF1913D Array CollapseP4755 Beautiful Pair[ARC186B] Typical Permutation Descriptor 笛卡尔树 定义 笛卡尔树是一种二叉树,每一个节点由一个键值二元组 ( k , w ) (k,w) (k,w) 构成。要…

笛卡尔树

  • 笛卡尔树
      • 定义
      • 构建
      • 性质
    • 习题
      • P6453 [COCI 2008/2009 #4] PERIODNI
      • CF1913D Array Collapse
      • P4755 Beautiful Pair
      • [ARC186B] Typical Permutation Descriptor

笛卡尔树

定义

笛卡尔树是一种二叉树,每一个节点由一个键值二元组 ( k , w ) (k,w) (k,w) 构成。要求 k k k 满足二叉搜索树的性质,而 w w w 满足堆的性质。如果笛卡尔树的 k , w k,w k,w 键值确定,且 k k k 互不相同, w w w 也互不相同,那么这棵笛卡尔树的结构是唯一的。

通俗的讲,笛卡尔树是一个二叉树,中序遍历是原序列,同时满足堆性质。

构建

以小根堆笛卡尔树为例。

法1
在这里插入图片描述
观察上图笛卡尔树,我们发现,一个节点的父亲就是 左边第一个比它小的右边第一个比它小的 的较大的那个。

写个单调栈来回跑两遍即可。

法2
我们考虑将元素按下标顺序依次插入到当前的笛卡尔树中。那么每次我们插入的元素必然在这棵树的右链(右链:即从根节点一直往右子树走,经过的节点形成的链)的末端。于是我们执行这样一个过程,从下往上比较右链节点与当前节点 u u u w w w,如果找到了一个右链上的节点 x x x 满足 w x < w u w_x<w_u wx<wu,就把 u u u 接到 x x x 的右儿子上,而 x x x 原本的右子树就变成 u u u 的左子树。

下图红框部分就是我们始终维护的右链:

在这里插入图片描述
模板P5854

	cin>>n;for(int i=1;i<=n;i++){cin>>a[i];while(Sid&&a[S[Sid]]>a[i])Sid--;l[i]=S[Sid+1];if(Sid)r[S[Sid]]=i;S[++Sid]=i;S[Sid+1]=0;}

性质

  • 区间 [ l , r ] [l,r] [l,r] 的极值所在为 l , r l,r l,r 在笛卡尔树上的 LCA。
  • 每个数左右两边第一个比它大/小的数分别是它在笛
    卡尔树上的父亲和“拐点祖先”。
  • 随机笛卡尔树的树高是 O ( log ⁡ n ) O(\log n) O(logn) 的。

习题

P6453 [COCI 2008/2009 #4] PERIODNI

在这里插入图片描述

1 ≤ n , k ≤ 500 1\le n,k\le 500 1n,k500,层高不会超过 1 0 6 10^6 106

考虑在第 i i i 列和第 j j j 列 的第 h h h 层都放了一个数,那么要求中间断开,即 min ⁡ k = i j a i < h \min_{k=i}^j a_i <h mink=ijai<h,其中 a i a_i ai 为第 i i i 列层数。

考虑建出小根堆笛卡尔树。

在这里插入图片描述

分成了若干矩形,树形DP即可。

CF1913D Array Collapse

link

在这里插入图片描述
1 ≤ n ≤ 3 × 1 0 5 , 1 ≤ p i ≤ 1 0 9 1\le n\le 3\times 10^5,1\le p_i \le 10^9 1n3×105,1pi109

  • 考虑建立一棵小根堆笛卡尔树。
  • 每个子树的根节点对应一段区间 [ l , r ] [l,r] [l,r] 的最小值的位置 x x x
  • 左子树表示 [ l , x − 1 ] [l,x-1] [l,x1],右子树表示 [ x + 1 , r ] [x+1,r] [x+1,r]
  • f u f_u fu 表示以 u u u 为根(即区间 [ l , r ] [l,r] [l,r] )的方案数,也记为 f [ l , r ] f[l,r] f[l,r]
  • 如果不删除 u u u,方案为 f [ l , x − 1 ] × f [ x + 1 , r ] f[l,x-1] \times f[x+1,r] f[l,x1]×f[x+1,r]
  • 考虑删除 u u u,因为是在笛卡尔树上 dp。
  • 所以如果 l > 1 l>1 l>1,那么 u u u 可以被左边删掉,方案数为 f [ x + 1 , r ] f[x+1,r] f[x+1,r]
  • 同理 r < n r<n r<n,方案数为 f [ l , x − 1 ] f[l,x-1] f[l,x1]
  • 如果都能被两边删除,算重的方案为 1 1 1(全部删掉)。

P4755 Beautiful Pair

link
在这里插入图片描述
1 ≤ n ≤ 1 0 5 , 1 ≤ a i ≤ 1 0 9 1\le n \le 10^5,1\le a_i\le 10^9 1n105,1ai109

  • 考虑建立一棵大根堆笛卡尔树。
  • 同上一题,每个子树的根节点对应一段区间 [ l , r ] [l,r] [l,r] 的最大值的位置 x x x
  • 类似分治,考虑计算跨过 x x x 的方案数。
  • 枚举短的一边(不妨假设是左边),设 i ∈ [ l , x ] i\in[l,x] i[l,x],那么需要查询 [ x , r ] [x,r] [x,r] ≤ a x a i \large \le \frac{a_x}{a_i} aiax的数的个数。
  • 容易证明枚举次数不超过 n log ⁡ n n\log n nlogn次。
  • 直接主席树维护即可。

[ARC186B] Typical Permutation Descriptor

link

在这里插入图片描述

1 ≤ N ≤ 3 × 1 0 5 , 0 ≤ A i < i 1\le N \le 3\times 10^5,0\le A_i< i 1N3×105,0Ai<i

不难发现 P A i P_{A_i} PAi 即是 i i i 左边第一个比 A i A_i Ai 小的数,根据这一点建立笛卡尔树,则原问题变为在笛卡尔树上填数的方案数,简单DP即可。

http://www.yayakq.cn/news/496528/

相关文章:

  • 自建社区网站丹东网站制作
  • 怎么做区块链网站北京大学php培训网站源码(dede
  • 儿童摄影网站源码吉安市建设局网站
  • 什么网站可以做论文关于茶叶的网站模板
  • 用网站做简历酷炫的网站欢迎页面
  • 建设厅官方网站河南网站怎么做图片动态
  • 按键精灵官方网站怎么做脚本成功的营销型网站设计特点
  • 唐山建设局网站大学生网站建设申报书
  • 泗水做网站怎么设计自己的网站
  • wordpress 更新网站做网站后台需要写代码吗
  • 网站空间建站个人网站备案简介
  • 做网站需要花费那方面的钱wordpress 缺少父主题
  • 个人 做自媒体 建网站360网站推广官网软件
  • 威海外贸网站建设怎么样wordpress水滴
  • 手机网站开发ios网站策划的最终体现是什么
  • 东莞大岭山楼盘做seo是要先有网站吗
  • 青海和城乡建设厅网站深圳品牌手表有哪些
  • 电子商务企业网站的建设蓝潮网站建设
  • 免费的网站推广 外贸wordpress 修改时间
  • html5手机资讯网站模板区块链交易网站建设
  • 江都建设上海公司网站顺德网站建设基本流程
  • 网站建设文字表达企业邮箱在哪里登陆
  • 电子商务网站建设教学计划网站建设服务怎么样
  • 怎么在DW网站站点下建立两张网页兰州市生态建设管理局网站
  • 网站dns如何修改不了同江佳木斯网站制作
  • mvc中手把手做网站固原建设厅官方网站
  • 无锡网站推广排名鱼巴士设计师服务平台
  • 网站开发现在怎么样网页设计网站首页代码
  • 外贸邦海关数据手机网站seo免费软件
  • linux网站开发呼和浩特网站建设价位