摘要: "题目" 可持久化01Trie+线段树分治。 首先用Trie算出所有询问对于特殊商品的答案。 然后我们给每一个进货的商品加上一个时间值,每个询问就会有相对应的时间区间。 我们开一棵时间的线段树,把每个询问加到线段树上,每个节点用一个vector储存这个节点的询问。 显然每个询问最多会在$log$个节 阅读全文
posted @ 2019-09-16 21:31 Shiina_Mashiro 阅读(124) 评论(0) 推荐(0) 编辑
摘要: "题目" 建可持久化01Trie。 每次建一个新版本把序列的每个前缀和插进去。 添加操作亦如此。 查询的话就看每个数位取反的一侧在01Trie的这个区间内是否出现过(也就是$sum$是否相等),然后跳儿子。 这里蕴含了高位贪心的思想。 阅读全文
posted @ 2019-09-16 19:31 Shiina_Mashiro 阅读(159) 评论(0) 推荐(0) 编辑
摘要: "Link" 有两种做法: 第一种是$O(nlog\ n)$的。 我们预处理两个数组: $pre_i$表示$p$中$i$前面的那个数是$pre_i$。 $lst_i$表示$a$中$a_i$前一个$pre_{a_i}$的位置。(代码中是$f_0$) 那么每个数往前跳几次$lst$,也就会对应排列$p$ 阅读全文
posted @ 2019-09-16 14:28 Shiina_Mashiro 阅读(182) 评论(0) 推荐(0) 编辑
摘要: "题目" 开一个堆,先把所有$a[i]+b[1]$压进优先队列。 然后每次把最小的取出来,把对应的$a[i]$的下一个$b[j]$拿出来加进去。 阅读全文
posted @ 2019-09-16 10:08 Shiina_Mashiro 阅读(140) 评论(0) 推荐(0) 编辑
摘要: "Link" 把$x$离散化,$y$降序排序,每种颜色开一个set。 因为我们需要不包含所有颜色,所以强制某种颜色不被包含即可。 对于某一个点,如果选出的矩形以其为下边界(不取到),左边界就是前驱的横坐标,右边界就是后继的横坐标(都取不到)。 前驱后继可以使用~~平衡树~~set或链表维护,计算一个 阅读全文
posted @ 2019-09-16 09:53 Shiina_Mashiro 阅读(277) 评论(0) 推荐(0) 编辑