01 2022 档案
摘要:前言 这太难了啦~但是冬令营讲这个东西了,提前开坑。前置芝士 Define #define ls tr[x].ch[0] #define rs tr[x].ch[1] struct Tree{int ch[2],val,fa,rev,xv;}tr[MAXN]; LCT? LCT 是怎么超越一般的树剖
阅读全文
摘要:前言 以前的学弟都学了就我还不会,只能爬了。。。 CDQ 分治 **这是一种思想!**这是一种思想!这是一种思想! CDQ 分治是非常优美的过程。当我们考虑序列中的数对计数等问题的时候可以想到用 CDQ 分治。 其过程是: 掏出一个序列; 从中间剪开; 答案分成了 类,一是只在左边的,二
阅读全文
摘要:前言 为了测试你板子的正确性,可以交到 Aizu 上去。我的代码都是 Shared 的。 记得开 double!记得开 double!记得开 double!记得开 double!记得开 double!记得开 double!记得开 double!记得开 double!记得开 double!记得开 do
阅读全文
摘要:传送门 Solution 题意已经很清楚了。 考虑这样一个三元组的位置,首先是 要选在非 位, 分别要在它的左右两边。那么有一个很明显的答案上界就是 ,其中 表示序列中 的个数。 然后来考虑这个问题
阅读全文
摘要:前言 又是每个人都会的算法,我不会只能爬去学~ 点分治 点分治通常用来解决树上路径统计问题。 其实点分治的想法很简单就是:我们考虑一棵有根的树,显然可以将其路径分成两类,一类是经过根的,一类是不经过根的。据此,可以得到一个牛逼想法就是:对于当前的根节点,直接求出它到子树内各个点的信息并统计,然后合并
阅读全文