随笔分类 -  差分

摘要:显然一个序列的gcd=gcd(其差分序列的gcd,序列中第一个数)。于是一维情况直接线段树维护差分序列即可。 容易想到将该做法拓展到二维。于是考虑维护二维差分,查询时对差分矩阵求矩形的gcd,再对矩形的两个边界求一下原本的gcd即可。 但这样大概需要三个二维线段树,空间可能不太够。由于查询区域是由一 阅读全文
posted @ 2019-02-01 17:51 Gloid 阅读(228) 评论(0) 推荐(0)
摘要:对每个人行道求出移动距离在哪些区间内时其在建筑物前面。现在问题即为选一个点使得其被最多的区间包含。差分即可。对建筑暴力去掉重叠部分。开始时没有去重用了nm次vector的push_back,时间大概是去重写法的300倍,不知所措。 阅读全文
posted @ 2018-12-01 20:38 Gloid 阅读(242) 评论(0) 推荐(0)
摘要:一个暴力的做法是把边看成点,之间的边权为两边的较大权值,最短路即可。但这样显然会被菊花图之类的卡掉。 考虑优化建图。将边拆成两个有向边,同样化边为点。原图中同一条边在新图中的两个点之间连边权为原边权的边。对于原图同一点的出边按权值从小到大排序,权值相邻的由小到大连边权为差值的边,由大到小连边权为0的 阅读全文
posted @ 2018-10-23 21:02 Gloid 阅读(178) 评论(0) 推荐(0)
摘要:考虑差分序列。每个差分序列的贡献是n-差分序列的和,即枚举首项。将式子拆开即可得到n*mk-1-Σi*cnt(i),cnt(i)为i在所有差分序列中的出现次数之和。显然每一个数出现次数是相同的,所以cnt(i)即等于(k-1)*mk-2。于是就很好算了。 阅读全文
posted @ 2018-09-17 21:11 Gloid 阅读(147) 评论(0) 推荐(0)
摘要:上一题的强制在线版。对图跑出一个dfs树,给非树边赋上随机权值,树边的权值为覆盖他的非树边权值的异或。这样如果某条树边和覆盖他的非树边都被割掉(即图不连通),他们的异或值就为0。每次对询问看有没有子集异或值为0即可,可以简单地用线性基搞定。 阅读全文
posted @ 2018-07-28 16:32 Gloid 阅读(319) 评论(0) 推荐(0)