随笔分类 - 算法 - CDQ分治
摘要:做这道题真的是涨姿势了,一般的CDQ分治都是在序列上进行的,这次是把CDQ分治放树上跑了~ 考虑一半的 CDQ 分治怎么进行: 递归处理左区间,处理左区间对右区间的影响,然后再递归处理右区间. 所以,如果是有坐标不递增的斜率优化的话就用 CDQ 分治先处理出左半部分答案,然后将处理好的左区间答案用来
阅读全文
摘要:你发现只会改变一个位置,所以可以直接进行dp 具体转移的话用 CDQ 分治转移就好了~ #include <bits/stdc++.h> #define N 100006 #define setIO(s) freopen(s".in","r",stdin) using namespace std;
阅读全文
摘要:不是很难想,但是细节巨多 开始一个地方想错了,然后...... code: #include <bits/stdc++.h> #define N 2000006 #define ll long long #define setIO(s) freopen(s".in","r",stdin) using
阅读全文
摘要:手画几下序列的变换后发现逆序对数是恒定的,故只需对第 $0$ 年求逆序对即可. 树状数组会 $TLE$ 的很惨,需要用到归并排序来求逆序对. 其实就是省掉了一个离散化的时间,估计能比树状数组快一半的时间.
阅读全文
摘要:Code:
阅读全文
摘要:简单来说,题中要求三维 LIS. 考虑如何使用 CDQ 分治. 我们可以事先将坐标按 $x$ 轴排序,先递归处理左边,再考虑左边对右边的影响. 由于我们再处理该段区间之前已经将该区间按照 $x$ 坐标排序,我们便能保证右区间的 $x$ 坐标一定不小于左区间的 $x$ 坐标. 这样有什么好处呢 ? 这
阅读全文
摘要:一道CDQ分治模板题简单来说,这道题是三维数点对于离线的二维数点,我们再熟悉不过:利用坐标的单调递增性,先按更坐标排序,再按纵坐标排序更新和查询时都直接调用纵坐标。实际上,我们是通过排序将二维中的一维给消掉了。那么,对于题中的三维数点,我们可以先按 $x$ 排序,以 $x$ 为标准进行分治在分治的过
阅读全文

浙公网安备 33010602011771号