只是觉得有两篇题解的思路长得很像而已
  • 板块题目总版
  • 楼主cff_0102sky & aqua
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/22 21:44
  • 上次更新2024/10/23 07:33:29
查看原帖
只是觉得有两篇题解的思路长得很像而已
542457
cff_0102sky & aqua楼主2024/10/22 21:44

没有任何其它意思,就是感觉 https://www.luogu.com.cn/article/eoei61yvhttps://www.luogu.com.cn/article/ht0xnbpz 的思路有部分相似之处,例如:

考虑先把所有询问的树建出来。

考虑直接把这个询问的树建立出来。


由于询问得到结果后只会进入固定的一个儿子结点,所以这是一颗二叉搜索树。

转化一下就是一个二叉排序树,二叉排序树的性质来自于在询问得到结果之后只会向一个特定的方向走


由于先询问的结点会在后询问的结点上方,所以这又是一个堆。

也就是一个堆的性质。堆的性质则是来自于询问的顺序的优先级。


两者一结合,正是一颗笛卡尔树。

然后发现这就是一个笛卡尔树


于是我们以下标为堆的权值,原权值为二叉搜索树的权值建出一颗笛卡尔树。

二叉树权值是题目给出的数的权值,堆的权值是题目给出的数的顺序,直接 O(n) 建立笛卡尔树。


考虑怎样才会说出一个 HILO,显然是在树上先往左儿子走后又往右子树走,统计这种情况的出现次数。

然后考虑什么样的情况下会说出 HILO,很明显的一种情况是先向左子树走,然后再向右子树走。


特别的,如果当前结点恰好是询问的那一个,会回答 LO,把这个也统计进答案即可。

需要注意的是,当走到一个节点的时候,如果这个节点恰好是询问的那一个,会回答 LO,也就是说,当向左走之后的一个节点在统计答案的时候需要加一,但是这个加一不会保留到其他子节点。


遍历这颗笛卡尔树。

然后就直接对着这个笛卡尔树遍历一下就好了。


当然,我知道题解之间在适当范围内的借鉴是正常的,(例如我今天刚刚才看到在某道紫色 hack 题的好多题解都挺像的x),而且这两篇题解的具体代码很显然都是自己写的,不存在“抄袭”,因此只是抒发一下感情罢了,毕竟在 https://www.luogu.com.cn/discuss/960854 中提到的两篇说明几乎完全一致的题解还没撤下其中一个呢。


所以管理员什么时候受理 https://www.luogu.com.cn/discuss/960854 啊,他们的说明几乎完全一致,明显存在互相抄袭的现象。

2024/10/22 21:44
加载中...