随笔分类 -  数据结构--析合树

摘要:题目 分析 析合树模板题的加强,变成了每次区间询问。 考虑容斥,也就是我们这里只要算中间被完全包含的那一段区间的所有子树和左右边界的右左的一部分。 具体见题解。 代码 #include<bits/stdc++.h> using namespace std; template<typename T> 阅读全文
posted @ 2021-06-25 20:14 __Anchor 阅读(73) 评论(0) 推荐(0)
摘要:题目 分析 析合树题。 首先这样“每行每列恰好一个棋子”的条件是很明显的说这是一个排列。 然后$k\times k$的矩阵这个条件再分析一下就容易得出这是指我们需要找出一个连续区间。 那么把矩阵转化成数组,然后就是析合树模板题了。 代码 #include<bits/stdc++.h> using n 阅读全文
posted @ 2021-06-25 20:11 __Anchor 阅读(64) 评论(0) 推荐(0)
摘要:题目 分析 析合树模板题。 先建出析合树。 就是要统计这样的点对的个数,那么在析合树上其实就是对于每一个点这样统计: \(1.\) 对于合点:任意两个儿子之间可以任意选择,那么方案加上 \(num\times (num-1)/2\) \(2.\) 对于析点:任何两个儿子都不能选,于是只有它本身这个节 阅读全文
posted @ 2021-06-25 20:08 __Anchor 阅读(74) 评论(0) 推荐(0)