随笔分类 -  算法 - CDQ分治

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