闲话 22.7.22

关于闲话

?为什么T1二分会炸(废话你贪心错了

但是T1的错误二分为T2正确的三分提供了很好的思路,虽然T2还是没A掉(最后直接拟合数据了

T3 manacher T4 分治 真有你的啊

突然很想听雾霭相随 是星界而不是世界唱的那种
还想听月光 虽然术力口版确实好听但是本家版实在是很抓耳朵

前几天吐槽“明明听的最多的是假定之夏但却唱不出来 匹老板的转生林檎才听了几遍就会唱了”
突然发现现在转生苹果已经不太会了 而假定之夏还是不会至少凭 肌肉记忆 刻意练习 还是唱的出一点 嗯
每次唱转生苹果都会想到糖的Andromeda我不知道为什么

关于cdq

通过一些转换,我们可以将树上的偏序关系转换到序列上的偏序关系,并增加维度离线求解。

P8575

根为1的树,每个节点 \(i\) 有一个二元组 \((a_i, b_i)\) 作为点权。询问每个点子树上(不包含该点)点权小于等于该点点权的点的个数。

\((a_i, b_i) \le (a_j, b_j) \leftrightarrow a_i \le a_j\ \wedge b_i \le b_j\)

具体地,记 \([l_i,\ r_i]\)\(i\) 对应的欧拉序。由性质可知,任意节点 \(p\) 的子节点 \(s\) 都有 \(l_p < l_s < r_s < r_p\) 。这样,我们就把树上的祖先关系转化成了序列上的包含问题。而包含问题显然可以作为单维偏序在cdq分治中出现。我们只需要确定与原命题等价的关系 \(l_p < l_s < r_p\) ,并使用树状数组维护即可。

没想好起什么名字所以还没出

根为1的树,每个节点 \(i\) 有一个点权 \(a_i\)。询问每个点子树上(不包含该点)小于等于该点点权的点权种类。

通过相似的方法,我们也可以将其转化成序列问题。

仍然考虑欧拉序。同时,对于节点 \(i\) ,记 \(\text{last}_ i = [l_\text{last},r_\text{last}]\) 为上一个点权等于 \(a_ i\) 的点对应欧拉序区间。设 \(p\)\(i\) 的祖先,我们讨论 \(i\)\(p\) 的贡献。首先设\(a_i \le a_p\)。我们发现,若 \(r_\text{last} < l_p\),则可以确定,在 \(dfs\) 过程中,\(i\) 是第一个被遍历到的值为 \(a_ i\) 的节点。在这种情况下,我们让 \(i\)\(p\) 作贡献。在其他情况下则不作贡献。

这种思路将区间去重信息维护的思路推广到了树上,因此是正确的。发现从维护 \(\text{last}\) 中可以再提取出一维偏序信息,因此仍然可以通过cdq分治进行维护。

通过此类思想,我们可以将一类树上查询等价到序列上,进行一系列范围的转换,最后抽象出偏序信息进行求解。

posted @ 2022-07-22 22:02  joke3579  阅读(176)  评论(3编辑  收藏  举报