随笔分类 - 算法—分块
1
摘要:题意 "题目链接" Sol 这题是来搞笑的吧。。 考虑一个数的贡献是$O(\frac{N}{i})$ 直接数论分块。 cpp include define Pair pair define MP(x, y) make_pair(x, y) define fi first define se seco
阅读全文
摘要:题意 "题目链接" 给出一张带权无向图,每次询问$(u, v)$之间是否存在一条路径满足$max(a) = A, max(b) = B$ Sol 这题居然是分块。。想不到想不到。。做这题的心路历程大概可以写个800字的作文。 $warning:$下面的做法复杂度是错的。但是可以过 以下是attack
阅读全文
摘要:题意 "题目链接" Sol 啊啊这题好恶心啊,推的时候一堆细节qwq $a \% i = a \frac{a}{i} i$ 把所有的都展开,直接分块。关键是那个$i \not= j$的地方需要减。。。。 然后就慢慢写就好了 cpp include define Pair pair define MP
阅读全文
摘要:题意 "题目链接" Sol 自己YY出了一个$n \sqrt{n} \log n$的辣鸡做法没想到还能过。。 可以直接对序列分块,我们记第$i$个位置的值为$a[i] = \frac{H_i}{i}$,那么显然一个位置能被看到当前仅当前面的$a[i]$都比他小。可以直接拿个vector维护,每次暴力
阅读全文
摘要:题意 "题目链接" Sol 很神仙的题 我们考虑询问(a, b)(a是b的祖先),直接对b根号分治 如果b的出现次数$ \sqrt{n}$,显然这样的b最多只有$\sqrt{n}$个,也就是说在询问中最多会有$\sqrt{n}$个这样的b,那么我们可以对每个a,暴力统计,复杂度$n\sqrt{n}$
阅读全文
摘要:题意 "题目链接" Sol 直接挂队爷的题解了 分块题好难调啊qwq cpp include define LL long long using namespace std; const int MAXN = 1e6 + 10; const LL INF = 6e18; template inlin
阅读全文
摘要:题意 "题目链接" Sol 不会做啊AAA。。 暴力上肯定是不行的,考虑根号分组 设$m = \sqrt{n}$ 对于前$m$个直接暴力,利用单调队列优化多重背包的思想,按$\% i$分组一下。复杂度$O(n\sqrt{n})$ 对于后$m$个,此时每个物品没有个数的限制,换一种dp方法 设$g[i
阅读全文
摘要:题意 "题目链接" Sol 五位数点问题,~~写个cdq分治套cdq分治套cdq分治套cdq分析就完了~~ 可以用bitset搞 对于每一科开$n$个bitset,其中$b[i]$表示的排名为$1 i$的人是哪些 查询的时候把每科的bitset &起来就行了 复杂度$k\frac{n^2}{32}$
阅读全文
摘要:#6284. 数列分块入门 8 内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer #6284. 数列分块入门 8 #6284. 数列分块入门 8 内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本
阅读全文
摘要:内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计讨论测试数据 题目描述 给出一个长为 nnn 的数列
阅读全文
摘要:内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计讨论测试数据 题目描述 给出一个长为 nnn 的数列
阅读全文
摘要:内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计讨论 1 测试数据 题目描述 给出一个长为 nnn
阅读全文
摘要:内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计讨论测试数据 题目描述 给出一个长为 nnn 的数列
阅读全文
摘要:内存限制:256 MiB时间限制:1500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 内存限制:256 MiB时间限制:1500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计讨论 1 测试数据 题目描述 给出一个长为 nn
阅读全文
摘要:内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计讨论测试数据 题目描述 给出一个长为 nnn 的数列
阅读全文
摘要:内存限制:256 MiB时间限制:100 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 内存限制:256 MiB时间限制:100 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计讨论 1 测试数据 题目描述 给出一个长为 nnn
阅读全文
摘要:给出一个长为n的数列,以及n个操作,操作涉及区间加法,区间求和。 这题的询问变成了区间上的询问,不完整的块还是暴力;而要想快速统计完整块的答案,需要维护每个块的元素和,先要预处理一下。 考虑区间修改操作,不完整的块直接改,顺便更新块的元素和;完整的块类似之前标记的做法,直接根据块的元素和所加的值计算
阅读全文
摘要:给出一个长为n的数列,以及n个操作,操作涉及区间加法,单点查值。 这是一道能用许多数据结构优化的经典题,可以用于不同数据结构训练。 数列分块就是把数列中每m个元素打包起来,达到优化算法的目的。 以此题为例,如果我们把每m个元素分为一块,共有n/m块,每次区间加的操作会涉及O(n/m)个整块,以及区间
阅读全文
摘要:分块:顾名思义,把一个区间分成不同的块,然后由原来的每个点暴力转换为每个块的暴力,这样就大大减小了时间复杂度 可能涉及的几个词语解释: 区间:数列中连续一段的元素 区间操作:将某个区间[a,b]的所有元素进行某种改动的操作 块:我们将数列划分成若干个不相交的区间,每个区间称为一个块 整块:在一个区间
阅读全文
1

浙公网安备 33010602011771号