随笔分类 -  数据结构-分块

摘要:[BZOJ 3509] [CodeChef] COUNTARI (FFT+分块) 题面 给出一个长度为n的数组,问有多少三元组(i,j,k)满足$i include include include define maxn 200000 using namespace std; typedef l 阅读全文
posted @ 2019-10-21 20:07 birchtree 阅读(326) 评论(0) 推荐(0) 编辑
摘要:[APIO2019] [LOJ 3145] 桥梁(分块+并查集)(有详细注释) 题面 略 分析 考试的时候就感觉子任务4是突破口,结果却写了个Kruskal重构树,然后一直想怎么在线用数据结构维护 实际上是离线算法。考虑只有查询的时候。我们可以离线对查询的权值从大到小排序,边也按边权从大到小排序,然 阅读全文
posted @ 2019-08-22 20:34 birchtree 阅读(206) 评论(0) 推荐(0) 编辑
摘要:[BZOJ 3731] Gty的超级妹子树 (树分块) 题面 给出一棵树(或森林),每个点都有一个值。现在有四种操作 1.查询x子树里 y的值有多少个 2.把点x的值改成y 3.添加一个新节点,它的父亲是x,值是y 4.断开节点x与父亲节点的边,一棵树变成两棵树 分析 新姿势 树分块get 分块预处 阅读全文
posted @ 2019-08-08 20:19 birchtree 阅读(299) 评论(0) 推荐(1) 编辑
摘要:[LOJ2736] [JOISC 2016 Day 3] 回转寿司 (分块+堆) 题面 给出一个有n 个点的环,环上各点有一个初始权值 ai 给出 Q 个询问,每次询问给出一个区间 [l,r]和一个值 A,对于 A 的变动定义如下 对于每个询问,回答遍历完区间[l,r]后 A的最终值。 分析 阅读全文
posted @ 2019-08-08 19:43 birchtree 阅读(369) 评论(0) 推荐(0) 编辑
摘要:[AHOI2013]作业 (莫队+分块) 题面 给定了一个长度为n的数列和若干个询问,每个询问是关于数列的区间[l,r],首先你要统计该区间内大于等于a,小于等于b的数的个数,其次是所有大于等于a,小于等于b的,且在该区间中出现过的数值的个数。 分析 为简化时间复杂度分析,假设n,m在同一个数量级 阅读全文
posted @ 2019-08-08 09:18 birchtree 阅读(288) 评论(0) 推荐(1) 编辑
摘要:[Luogu 4688] [Ynoi2016]掉进兔子洞 (莫队+bitset) 题面 一个长为 n 的序列 a。有 m 个询问,每次询问三个区间,把三个区间中同时出现的数一个一个删掉,问最后三个区间剩下的数的个数和,询问独立。注意这里删掉指的是一个一个删,不是把等于这个值的数直接删完,比如三个区间 阅读全文
posted @ 2019-08-06 17:31 birchtree 阅读(168) 评论(0) 推荐(0) 编辑
摘要:[BZOJ4358]Permu(回滚莫队) 题面 给出一个长度为n的排列P(P1,P2,...Pn),以及m个询问。每次询问某个区间[l,r]中,最长的值域连续段长度。 分析 最简单的方法显然是用线段树维护最长值域连续段长度,复杂度O(nnlogn),会TLE 我们以值为下标维 阅读全文
posted @ 2019-08-06 17:23 birchtree 阅读(832) 评论(0) 推荐(2) 编辑
摘要:题面 "传送门" 给定序列d和lim。假设有一个初始价值x0,则经历第i天后价值变为min(x0+d[i],lim[i]),记f(i,j,x0)表示以初始代价x0依次经过第i天到第j天后的价值。每次询问给出l,r,x0,求max(f(i,j,x0)),其中[i,j]是子串 阅读全文
posted @ 2019-02-28 13:24 birchtree 阅读(397) 评论(0) 推荐(1) 编辑
摘要:题面 "luogu传送门" .gif) .gif) .gif) .gif) 分析 先分块,设块大小为x(之后我们会证明块大小取何值会更优) 步骤1 把所有的数离散化,然后对每个值开一个vector pos[i],pos[i]存储数i出现的位置 我们设查询的区间为[l,r],需要求数v出现的次数,然后 阅读全文
posted @ 2019-02-21 16:56 birchtree 阅读(204) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示